Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

HTTPv2 Protocol

Svnserve Protocol

FS API

...

These new APIs are required:

...

,

...

1. Query

...

FSFS

...

,

...

FSFS Format

See MoveDev MovesInFSFS

  • Given two versioned directories, DIR1@REV1 and DIR2@REV2 (REV1 != REV2), return a list of (NAME1, NODE-LINE-ID, NAME2) tuples containing each node that is an immediate child of DIR1@REV1 and/or of DIR2@REV2 and is moved in REV2 relative to REV1. In a given entry, NAME1 or NAME2 is null if the node moved into DIR2 or out of DIR1 respectively.

That form reports renames directly and enables the caller to build up a mapping of cross-directory moves by combining the results of multiple queries.

Since that form only looks at a directory's children, we will also need a single-node query. It could be in this form:

  • Given an existing node PATH1@REV1 and an existing revision REV2, return PATH2 at which the same node-line lives in REV2, or null if it does not.

2. Commit

The following new method is needed:

  • svn_fs_move(svn_fs_root_t *root, from_path, to_path)'. Similar to copy and delete, except the copy will keep the same (node-id, copy-id) as its source. 'root' must be the root of a transaction.

FSFS Format

See under “Commit Editor and Query Functions (FSFS)”.

Dump File Format

Commit Driver (WC)

...

  • Extend repos diff to calculate and transmit moves, using the new FS query API.

FSFS

Changes needed to extend FSFS format 6 (or 7?).

  • A lazy child of a copied node always gets a new copy-id, never the copy-id of its parent, when un-lazified.
    • Is*' that* 'correct,' 'Brane?
  • New FS vtable methods to implement the interfaces defined in the 'FS' section.
  • 'changes' list - record as a 'move'
  • Adjust implementation of existing query APIs to report moves as copy-and-delete, for back-compat.

Client lib

  • [minor] 'move URL URL' uses move-aware editor and sends a move.

...