...
HTTPv2 Protocol
Svnserve Protocol
FS API
...
These new APIs are required:
...
,
...
1. Query
...
FSFS
...
,
...
FSFS Format
- 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.
...