You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by Apache subversion Wiki <co...@subversion.apache.org> on 2013/09/04 18:33:55 UTC
[Subversion Wiki] Update of "MoveDev/MovePhase1Plan" by JulianFoad
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.
The "MoveDev/MovePhase1Plan" page has been changed by JulianFoad:
https://wiki.apache.org/subversion/MoveDev/MovePhase1Plan
New page:
== 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 ===
* New: 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.
* New query API to find the same node-line in another revision: See under “Commit Editor and Query Functions (FSFS)”.
=== FSFS Format ===
See under “Commit Editor and Query Functions (FSFS)”.
=== 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.
=== Commit Editor and Query Functions (FSFS) ===
Changes needed to extend FSFS format 6.
* A lazy child of a copied node always gets a new copy-id, never the copy-id of its parent, when un-lazified.
* ''Or something like that. Brane?''
* New FS vtable method '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.
* New API to find the same node-line in another revision. This query can be shaped in various ways, such as:
* For each of a given set of node-line-ids, find the path where it exists in revision Y.
* For each of a given set of paths in revision X, find the path where the same node-line exists in revision Y.
* Compare directories PATH1@REV2 and PATH2@REV2, and return a list of matching name-pairs between them.
* '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.
=== 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)?