Changes to Core Components

The main functional changes are in the following areas. Many smaller changes will also be needed; for example, to make the log command report moves as such.

APIs, Protocols, Formats:

  • delta editor API
  • httpv2 protocol
  • svnserve protocol
  • FS API
  • FSFS format
  • dump file format

Functional Modules:

  • commit driver (WC)
  • update editor (WC)
  • RA-serf
  • RA-svn
  • RA-local
  • mod_dav_svn
  • svnserve
  • commit editor (FSFS)
  • repos diff (repos layer)
  • FS query functions (FSFS)
  • svnadmin dump/load

Major and minor changes essential for Phase 1 are listed in the following subsections.

Delta Editor API

Move support is to be added to either Ev1 (see MoveDev Ev15MovesDesign) or Ev2 (see MoveDev Ev2MovesDesign).

  • Add 'move-away' and 'move-here' methods.

HTTPv2 Protocol

Svnserve Protocol

FS API, FSFS, FSFS Format

See MoveDev MovesInFSFS.

Dump File Format

Commit Driver (WC)

  • WC describes each move from the WC DB to the move-aware editor.

Update Editor (WC)

  • WC receives each move from the move-aware editor.
  • WC performs the move. (non trivial)
  • Moves do not conflict with edits (of a file and/or of a tree).
  • Lose any move heuristics currently built in to copy & delete. I think this only affects the conflict resolution.

RA-serf, RA-svn, mod_dav_svn, svnserve

  • Use move-aware editor APIs and transmit and receive moves.

RA-local

  • Use move-aware editor APIs.

Repos Diff (repos layer)

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

Client lib

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

svnadmin dump/load

  • svnadmin dump writes moves to dump file
  • svnadmin load reads moves from dump file

svnadmin upgrade

  • upgrade marks the repository as having move semantics enabled (in new revisions)?
  • No labels