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 (question)

svnlook

  • 'diff' recognizes renames

RA layer

Client lib

  • 'update' and 'switch' recognize 'move'.
  • 'merge' recognizes 'move'.
  • No labels