tests/test-copies-chain-merge.t
changeset 46593 075b2499e3d6
parent 46592 3805b13ad7fe
child 46594 74e2256a56b8
equal deleted inserted replaced
46592:3805b13ad7fe 46593:075b2499e3d6
   863   |
   863   |
   864   o  0 i-0 initial commit: a b h
   864   o  0 i-0 initial commit: a b h
   865   
   865   
   866 
   866 
   867 
   867 
   868 
   868 Subcase: chaining "merged" information during a merge
       
   869 ``````````````````````````````````````````````````````
       
   870 
       
   871 When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges.
       
   872 
       
   873   $ case_desc="chained merges (copy-overwrite -> simple) - same content"
       
   874 
       
   875 (extra unrelated changes)
       
   876 
       
   877   $ hg up 'desc("f-2")'
       
   878   2 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
       
   879   1 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
       
   880   $ echo n > unrelated-n
       
   881   $ hg add unrelated-n
       
   882   $ hg ci -m 'n-1: unrelated changes (based on the "f" series of changes)'
       
   883   created new head
       
   884 
       
   885   $ hg up 'desc("g-1")'
       
   886   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   887   $ echo o > unrelated-o
       
   888   $ hg add unrelated-o
       
   889   $ hg ci -m 'o-1: unrelated changes (based on "g" changes)'
       
   890   created new head
       
   891 
       
   892 (merge variant 1)
       
   893 
       
   894   $ hg up 'desc("mFGm")'
       
   895   1 files updated, 0 files merged, 2 files removed, 0 files unresolved (no-changeset !)
       
   896   0 files updated, 0 files merged, 2 files removed, 0 files unresolved (changeset !)
       
   897   $ hg merge 'desc("o-1")'
       
   898   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   899   (branch merge, don't forget to commit)
       
   900   $ hg ci -m "mFG,Om: $case_desc"
       
   901 
       
   902 (merge variant 2)
       
   903 
       
   904   $ hg up 'desc("o-1")'
       
   905   2 files updated, 0 files merged, 0 files removed, 0 files unresolved (no-changeset !)
       
   906   1 files updated, 0 files merged, 0 files removed, 0 files unresolved (changeset !)
       
   907   $ hg merge 'desc("FGm")'
       
   908   1 files updated, 0 files merged, 1 files removed, 0 files unresolved (no-changeset !)
       
   909   0 files updated, 0 files merged, 1 files removed, 0 files unresolved (changeset !)
       
   910   (branch merge, don't forget to commit)
       
   911   $ hg ci -m "mO,FGm: $case_desc"
       
   912   created new head
       
   913 
       
   914 (merge variant 3)
       
   915 
       
   916   $ hg up 'desc("mGFm")'
       
   917   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   918   $ hg merge 'desc("n-1")'
       
   919   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   920   (branch merge, don't forget to commit)
       
   921   $ hg ci -m "mGF,Nm: $case_desc"
       
   922 
       
   923 (merge variant 4)
       
   924 
       
   925   $ hg up 'desc("n-1")'
       
   926   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   927   $ hg merge 'desc("mGFm")'
       
   928   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   929   (branch merge, don't forget to commit)
       
   930   $ hg ci -m "mN,GFm: $case_desc"
       
   931   created new head
       
   932 
       
   933   $ hg log -G --rev '::(desc("mFG,Om") + desc("mO,FGm") + desc("mGF,Nm") + desc("mN,GFm"))'
       
   934   @    53 mN,GFm: chained merges (copy-overwrite -> simple) - same content
       
   935   |\
       
   936   +---o  52 mGF,Nm: chained merges (copy-overwrite -> simple) - same content
       
   937   | |/
       
   938   | | o    51 mO,FGm: chained merges (copy-overwrite -> simple) - same content
       
   939   | | |\
       
   940   | | +---o  50 mFG,Om: chained merges (copy-overwrite -> simple) - same content
       
   941   | | | |/
       
   942   | | | o  49 o-1: unrelated changes (based on "g" changes)
       
   943   | | | |
       
   944   | o | |  48 n-1: unrelated changes (based on the "f" series of changes)
       
   945   | | | |
       
   946   o-----+  29 mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
       
   947   |/ / /
       
   948   | o /  28 mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
       
   949   |/|/
       
   950   | o  25 g-1: update d
       
   951   | |
       
   952   o |  22 f-2: rename i -> d
       
   953   | |
       
   954   o |  21 f-1: rename h -> i
       
   955   |/
       
   956   o  2 i-2: c -move-> d
       
   957   |
       
   958   o  1 i-1: a -move-> c
       
   959   |
       
   960   o  0 i-0 initial commit: a b h
       
   961   
   869 
   962 
   870 Summary of all created cases
   963 Summary of all created cases
   871 ----------------------------
   964 ----------------------------
   872 
   965 
   873   $ hg up --quiet null
   966   $ hg up --quiet null
   912   mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way
  1005   mDBm-0 simple merge - B side: unrelated update, D side: delete and recreate a file (with different content) - the other way
   913   mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
  1006   mDGm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - one way
   914   mEA,Jm: chained merges (conflict -> simple) - same content everywhere
  1007   mEA,Jm: chained merges (conflict -> simple) - same content everywhere
   915   mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
  1008   mEAm-0 merge with copies info on both side - A side: rename d to f, E side: b to f, (same content for f) - the other way
   916   mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
  1009   mFBm-0 simple merge - B side: unrelated change, F side: overwrite d with a copy (from h->i->d) - the other way
       
  1010   mFG,Om: chained merges (copy-overwrite -> simple) - same content
   917   mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
  1011   mFGm-0 merge - G side: content change, F side: copy overwrite, no content change - one way
   918   mGCm-0 merge updated/deleted - revive the file (updated content) - the other way
  1012   mGCm-0 merge updated/deleted - revive the file (updated content) - the other way
   919   mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way
  1013   mGDm-0 actual content merge, copies on one side - D side: delete and re-add (different content), G side: update content - the other way
       
  1014   mGF,Nm: chained merges (copy-overwrite -> simple) - same content
   920   mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
  1015   mGFm-0 merge - G side: content change, F side: copy overwrite, no content change - the other way
   921   mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way
  1016   mHC-delete-before-conflict-m-0 simple merge - C side: d is the results of renames then deleted, H side: d is result of another rename (same content as the other branch) - the other way
   922   mJ,EAm: chained merges (conflict -> simple) - same content everywhere
  1017   mJ,EAm: chained merges (conflict -> simple) - same content everywhere
   923   mK,AEm: chained merges (conflict -> simple) - same content everywhere
  1018   mK,AEm: chained merges (conflict -> simple) - same content everywhere
   924   mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
  1019   mL,BC+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
   925   mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
  1020   mL,CB+revertm: chained merges (salvaged -> simple) - same content (when the file exists)
       
  1021   mN,GFm: chained merges (copy-overwrite -> simple) - same content
       
  1022   mO,FGm: chained merges (copy-overwrite -> simple) - same content
       
  1023   n-1: unrelated changes (based on the "f" series of changes)
       
  1024   o-1: unrelated changes (based on "g" changes)
   926 
  1025 
   927 
  1026 
   928 Test that sidedata computations during upgrades are correct
  1027 Test that sidedata computations during upgrades are correct
   929 ===========================================================
  1028 ===========================================================
   930 
  1029 
  1207   ##### revision 46 #####
  1306   ##### revision 46 #####
  1208   1 sidedata entries
  1307   1 sidedata entries
  1209    entry-0014 size 4
  1308    entry-0014 size 4
  1210     '\x00\x00\x00\x00'
  1309     '\x00\x00\x00\x00'
  1211   ##### revision 47 #####
  1310   ##### revision 47 #####
       
  1311   1 sidedata entries
       
  1312    entry-0014 size 4
       
  1313     '\x00\x00\x00\x00'
       
  1314   ##### revision 48 #####
       
  1315   1 sidedata entries
       
  1316    entry-0014 size 24
       
  1317     '\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-n'
       
  1318   added      : unrelated-n, ;
       
  1319   ##### revision 49 #####
       
  1320   1 sidedata entries
       
  1321    entry-0014 size 24
       
  1322     '\x00\x00\x00\x01\x04\x00\x00\x00\x0b\x00\x00\x00\x00unrelated-o'
       
  1323   added      : unrelated-o, ;
       
  1324   ##### revision 50 #####
       
  1325   1 sidedata entries
       
  1326    entry-0014 size 4
       
  1327     '\x00\x00\x00\x00'
       
  1328   ##### revision 51 #####
       
  1329   1 sidedata entries
       
  1330    entry-0014 size 4
       
  1331     '\x00\x00\x00\x00'
       
  1332   ##### revision 52 #####
       
  1333   1 sidedata entries
       
  1334    entry-0014 size 4
       
  1335     '\x00\x00\x00\x00'
       
  1336   ##### revision 53 #####
  1212   1 sidedata entries
  1337   1 sidedata entries
  1213    entry-0014 size 4
  1338    entry-0014 size 4
  1214     '\x00\x00\x00\x00'
  1339     '\x00\x00\x00\x00'
  1215 
  1340 
  1216 #endif
  1341 #endif
  2166     a (missing-correct-output sidedata !)
  2291     a (missing-correct-output sidedata !)
  2167     a (missing-correct-output upgraded !)
  2292     a (missing-correct-output upgraded !)
  2168   A unrelated-l
  2293   A unrelated-l
  2169   R a
  2294   R a
  2170 
  2295 
       
  2296 Subcase: chaining "merged" information during a merge
       
  2297 ``````````````````````````````````````````````````````
       
  2298 
       
  2299 When a non-rename change are merged with a copy overwrite, the merge pick the copy source from (p1) as the reference. We should preserve this information in subsequent merges.
       
  2300 
       
  2301 
       
  2302 reference output:
       
  2303 
       
  2304  (for details about the filelog pick, check the mFGm/mGFm case)
       
  2305 
       
  2306   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm")' d
       
  2307   A d
       
  2308     a (filelog !)
       
  2309     h (sidedata !)
       
  2310     h (upgraded !)
       
  2311   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm")' d
       
  2312   A d
       
  2313     a (filelog !)
       
  2314     a (sidedata !)
       
  2315     a (upgraded !)
       
  2316 
       
  2317 Chained output
       
  2318 
       
  2319   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mO,FGm")' d
       
  2320   A d
       
  2321     a (filelog !)
       
  2322     h (sidedata !)
       
  2323     h (upgraded !)
       
  2324   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFG,Om")' d
       
  2325   A d
       
  2326     a (filelog !)
       
  2327     h (sidedata !)
       
  2328     h (upgraded !)
       
  2329 
       
  2330 
       
  2331   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGF,Nm")' d
       
  2332   A d
       
  2333     a (filelog !)
       
  2334     a (missing-correct-output sidedata !)
       
  2335     a (missing-correct-output upgraded !)
       
  2336     h (known-bad-output sidedata !)
       
  2337     h (known-bad-output upgraded !)
       
  2338   $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mN,GFm")' d
       
  2339   A d
       
  2340     a (filelog !)
       
  2341     a (missing-correct-output sidedata !)
       
  2342     a (missing-correct-output upgraded !)
       
  2343     h (known-bad-output sidedata !)
       
  2344     h (known-bad-output upgraded !)