subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache subversion Wiki <comm...@subversion.apache.org>
Subject [Subversion Wiki] Update of "MultiLayerMoves" by PhilipMartin
Date Thu, 03 May 2012 09:24:38 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.

The "MultiLayerMoves" page has been changed by PhilipMartin:
http://wiki.apache.org/subversion/MultiLayerMoves?action=diff&rev1=26&rev2=27

  
   * Suppose the user attempts to revert, or delete, X/B in the mixed-revision move: does
that break the move leaving A deleted and X/B copied?  Does revert fail?
  
- == Problem Cases ==
+ == Update Conflict ==
  
  Move A to B:
  
@@ -311, +311 @@

  
  Perhaps that is not a problem: since B/f is deleted there is no working file to accept the
A/f changes so this is a form of tree conflict. Perhaps we end up with A moved-to B but broken
(because the revisions don't match) and a tree conflict (on A/f?). After the update the conflict
resolution is either to break the move into copy+delete or to update the revisions.  Since
the resolution happens after the update it is probably possible to avoid the mixed-rev state.
  
+ = Problem Case =
+ 
+ A mixed-rev BASE tree:
+ 
+ || op-depth || local-relpath || presence     || revision ||
+ ||  0       ||    A          || normal       ||   1      ||
+ ||  0       ||    A/B        || normal       ||   2      ||
+ ||  0       ||    A/B/C      || normal       ||   3      ||
+ |||||||| '''table H1''' ||
+ 
+ Move A to X, a mixed-rev move:
+ 
+ || op-depth || local-relpath || presence     || revision || moved-to ||
+ ||  0       ||    A          || normal       ||   1      ||          ||
+ ||  0       ||    A/B        || normal       ||   2      ||          ||
+ ||  0       ||    A/B/C      || normal       ||   3      ||          ||
+ ||  1       ||    A          || base-deleted ||          ||   X      ||
+ ||  1       ||    A/B        || base-deleted ||          ||          ||
+ ||  1       ||    A/B/C      || base-deleted ||          ||          ||
+ ||  1       ||    X          || normal       ||   1      ||          ||
+ ||  1       ||    X/B        || not-present  ||          ||          ||
+ ||  2       ||    X/B        || normal       ||   2      ||          ||
+ ||  2       ||    X/B/C      || not-present  ||          ||          ||
+ ||  3       ||    X/B/C      || normal       ||   3      ||          ||
+ |||||||||| '''table H2''' ||
+ 
+ Nested moves inside X are now a problem. Consider moving X/B to X/Y:
+ 
+ || op-depth || local-relpath || presence     || revision || moved-to ||
+ ||  0       ||    A          || normal       ||   1      ||          ||
+ ||  0       ||    A/B        || normal       ||   2      ||          ||
+ ||  0       ||    A/B/C      || normal       ||   3      ||          ||
+ ||  1       ||    A          || base-deleted ||          ||   X      ||
+ ||  1       ||    A/B        || base-deleted ||          ||          ||
+ ||  1       ||    A/B/C      || base-deleted ||          ||          ||
+ ||  1       ||    X          || normal       ||   1      ||          ||
+ ||  1       ||    X/B        || not-present  ||          ||          ||
+ ||  2       ||    X/Y        || normal       ||   2      ||          ||
+ ||  2       ||    X/Y/C      || not-present  ||          ||          ||
+ ||  3       ||    X/Y/C      || normal       ||   3      ||          ||
+ |||||||||| '''table H3''' ||
+ 
+ the op-depth=2 tree X/B gets removed and a new op-depth=2 tree X/Y is created.  There is
no base-deleted tree for X/B so the move to X/Y is not recorded.  Should the move to X/Y be
recorded and if so where?  Perhaps in the not-present node for X/B?
+ 

Mime
View raw message