Checkout
Julian Foad
committed
on 29 Sep 15
On the 'move-tracking-2' branch: Keep track of new EIDs assigned with a
transaction, and only convert them to permanent EIDs at commit time.… Show more
On the 'move-tracking-2' branch: Keep track of new EIDs assigned with a

transaction, and only convert them to permanent EIDs at commit time.

This allows us to add elements in a txn based on an old revision, and then

'update' the txn to be based on a newer revision, and the EIDs added in the

newer revision will not clash with the EIDs added in the txn. (This 'update'

could be either a client-side WC update or the automatic rebase-on-commit.)

* subversion/libsvn_delta/editor3e.c

 (VALID_EID): Adjust for local EIDs being negative.

* subversion/include/private/svn_branch.h,

 subversion/libsvn_delta/branch.c

 (svn_branch_revision_root_t): Document that 'first_eid' holds less than

   zero for transaction-local EIDs.

 (svn_branch_txn_new_eid): Rename from 'svn_branch_revision_root_new_eid'.

   Allocate negative EIDs instead of positive EIDs.

 (branch_finalize_eids,

  svn_branch_txn_finalize_eids): New.

 (svn_branch_map_add_subtree): Track the rename.

* subversion/libsvn_delta/compat3e.c

 (editor3_new_eid): Track the rename.

 (editor3_alter): Track the rename. Adjust for local EIDs being negative.

 (editor3_complete): Finalize the txn EIDs before committing.

* subversion/libsvn_delta/element.c

 (svn_element_payload_invariants): Adjust for local EIDs being negative.

* subversion/svnmover/svnmover.c

 (do_branch): Track the rename.

Show less