API changes needed to support move tracking.
(Early draft)
Tree Diff / Editor APIs
svn_editor_t (Ev2)
- This has 'move' operations designed in, but I haven't yet tried to validate and use them.
svn_delta_editor_t
- See MoveDev MovesOverDeltaEditor
- This is a path-based editor, and a path-based solution is needed.
- Method:
- Modify the producer and consumer but not the protocol, keeping back-compat.
- Send src & dest paths with 'del' and 'copy' methods when part of a move.
svn_tree_processor_t
- This is a path-based editor.
svn_wc_diff_callbacksN_t
- This is a path-based editor.
svn_ra_reporter_t
- This is a path-based editor.
Client to server
Client lib
- 'move URL URL' sends 'move'
- 'commit' sends 'move'
RA layer
- 'copy' method recognizes 'move' (src-rev = -1).
Repos
- 'copy' method recognizes 'move' (src-rev = -1).
FS
- Add a 'move' method.
FSFS
- Add a 'move' method, that keeps copy-id the same.
- 'changes' list - record as a 'move'?
Server to client
Repos
- report -> delta
- replay
- delta-dirs
svnadmin
- 'upgrade' enables move-specific metadata
- 'upgrade' creates move-specific metadata by heuristics
- 'dump'/'load' writes & reads move-specific metadata
svnlook
- 'diff' recognizes renames
RA layer
Client lib
- 'update' and 'switch' recognize 'move'.
- 'merge' recognizes 'move'.