# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2017-10-09 19:33:24 # Node ID 1b261be2033bb0a4df77e923e017bbcb5677d63c # Parent 60213a2eca81af4e1daa3ef9e44af859ba1e5756 tests: optimize test-copytrace-heuristics.t test-copytrace-heuristics.t tests the heuristics algorithm of copytracing. The test has a pattern of making a server repo first and then cloning into a local repo for each test to have public and draft commits. This is done because if we have all draft commits and we have very less commits, heuristics will fallback to full copytracing as that will be fast. To avoid creating the server repo, we set the commit limit to -1 so that everytime we perform the heuristics algorithm even when having full drafts and tweak the config setting when we need to test the ability to fallback to full copytracing. This optimizes this test by 3 seconds. Before: real 0m41.503s user 0m36.068s sys 0m3.900s After: real 0m38.826s user 0m33.884s sys 0m3.396s Differential Revision: https://phab.mercurial-scm.org/D991 diff --git a/tests/test-copytrace-heuristics.t b/tests/test-copytrace-heuristics.t --- a/tests/test-copytrace-heuristics.t +++ b/tests/test-copytrace-heuristics.t @@ -6,6 +6,7 @@ Test for the heuristic copytracing algor > cat >> $1/.hg/hgrc < [experimental] > copytrace = heuristics + > copytrace.sourcecommitlimit = -1 > EOF > } > __EOF__ @@ -17,9 +18,16 @@ Test for the heuristic copytracing algor > shelve= > EOF +NOTE: calling initclient() set copytrace.sourcecommitlimit=-1 as we want to +prevent the full copytrace algorithm to run and test the heuristic algorithm +without complexing the test cases with public and draft commits. + Check filename heuristics (same dirname and same basename) - $ hg init server - $ cd server +---------------------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ mkdir dir $ echo a > dir/file.txt @@ -30,22 +38,18 @@ Check filename heuristics (same dirname $ hg mv a b $ hg mv -q dir dir2 $ hg ci -m 'mv a b, mv dir/ dir2/' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 0 $ echo b > a $ echo b > dir/file.txt $ hg ci -qm 'mod a, mod dir/file.txt' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: 557f403c0afd2a3cf15d7e2fb1f1001a8b85e081 - | desc: mod a, mod dir/file.txt, phase: draft + | desc: mod a, mod dir/file.txt | o changeset: 928d74bc9110681920854d845c06959f6dfc9547 - |/ desc: mv a b, mv dir/ dir2/, phase: public + |/ desc: mv a b, mv dir/ dir2/ o changeset: 3c482b16e54596fed340d05ffaf155f156cda7ee - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 1 rebasing 2:557f403c0afd "mod a, mod dir/file.txt" (tip) @@ -53,12 +57,14 @@ Check filename heuristics (same dirname merging dir2/file.txt and dir/file.txt to dir2/file.txt saved backup bundle to $TESTTMP/repo/.hg/strip-backup/557f403c0afd-9926eeff-rebase.hg (glob) $ cd .. - $ rm -rf server $ rm -rf repo Make sure filename heuristics do not when they are not related - $ hg init server - $ cd server +-------------------------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo 'somecontent' > a $ hg add a $ hg ci -m initial @@ -66,21 +72,17 @@ Make sure filename heuristics do not whe $ echo 'completelydifferentcontext' > b $ hg add b $ hg ci -m 'rm a, add b' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 0 $ printf 'somecontent\nmoarcontent' > a $ hg ci -qm 'mode a' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: d526312210b9e8f795d576a77dc643796384d86e - | desc: mode a, phase: draft + | desc: mode a | o changeset: 46985f76c7e5e5123433527f5c8526806145650b - |/ desc: rm a, add b, phase: public + |/ desc: rm a, add b o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 1 rebasing 2:d526312210b9 "mode a" (tip) @@ -90,49 +92,14 @@ Make sure filename heuristics do not whe [1] $ cd .. - $ rm -rf server $ rm -rf repo Test when lca didn't modified the file that was moved - $ hg init server - $ cd server - $ echo 'somecontent' > a - $ hg add a - $ hg ci -m initial - $ echo c > c - $ hg add c - $ hg ci -m randomcommit - $ hg mv a b - $ hg ci -m 'mv a b' - $ cd .. - $ hg clone -q server repo +----------------------------------------------------- + + $ hg init repo $ initclient repo $ cd repo - $ hg up -q 1 - $ echo b > a - $ hg ci -qm 'mod a' - - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' - @ changeset: 9d5cf99c3d9f8e8b05ba55421f7f56530cfcf3bc - | desc: mod a, phase: draft - | o changeset: d760186dd240fc47b91eb9f0b58b0002aaeef95d - |/ desc: mv a b, phase: public - o changeset: 48e1b6ba639d5d7fb313fa7989eebabf99c9eb83 - | desc: randomcommit, phase: public - o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0 - desc: initial, phase: public - - $ hg rebase -s . -d 2 - rebasing 3:9d5cf99c3d9f "mod a" (tip) - merging b and a to b - saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9d5cf99c3d9f-f02358cc-rebase.hg (glob) - $ cd .. - $ rm -rf server - $ rm -rf repo - -Rebase "backwards" - $ hg init server - $ cd server $ echo 'somecontent' > a $ hg add a $ hg ci -m initial @@ -141,65 +108,68 @@ Rebase "backwards" $ hg ci -m randomcommit $ hg mv a b $ hg ci -m 'mv a b' + $ hg up -q 1 + $ echo b > a + $ hg ci -qm 'mod a' + + $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + @ changeset: 9d5cf99c3d9f8e8b05ba55421f7f56530cfcf3bc + | desc: mod a, phase: draft + | o changeset: d760186dd240fc47b91eb9f0b58b0002aaeef95d + |/ desc: mv a b, phase: draft + o changeset: 48e1b6ba639d5d7fb313fa7989eebabf99c9eb83 + | desc: randomcommit, phase: draft + o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0 + desc: initial, phase: draft + + $ hg rebase -s . -d 2 + rebasing 3:9d5cf99c3d9f "mod a" (tip) + merging b and a to b + saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9d5cf99c3d9f-f02358cc-rebase.hg (glob) $ cd .. - $ hg clone -q server repo + $ rm -rf repo + +Rebase "backwards" +------------------ + + $ hg init repo $ initclient repo $ cd repo + $ echo 'somecontent' > a + $ hg add a + $ hg ci -m initial + $ echo c > c + $ hg add c + $ hg ci -m randomcommit + $ hg mv a b + $ hg ci -m 'mv a b' $ hg up -q 2 $ echo b > b $ hg ci -qm 'mod b' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: fbe97126b3969056795c462a67d93faf13e4d298 - | desc: mod b, phase: draft + | desc: mod b o changeset: d760186dd240fc47b91eb9f0b58b0002aaeef95d - | desc: mv a b, phase: public + | desc: mv a b o changeset: 48e1b6ba639d5d7fb313fa7989eebabf99c9eb83 - | desc: randomcommit, phase: public + | desc: randomcommit o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 0 rebasing 3:fbe97126b396 "mod b" (tip) merging a and b to a saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fbe97126b396-cf5452a1-rebase.hg (glob) $ cd .. - $ rm -rf server $ rm -rf repo -Rebase draft commit on top of draft commit +Check a few potential move candidates +------------------------------------- + $ hg init repo $ initclient repo $ cd repo - $ echo 'somecontent' > a - $ hg add a - $ hg ci -m initial - $ hg mv a b - $ hg ci -m 'mv a b' - $ hg up -q ".^" - $ echo b > a - $ hg ci -qm 'mod a' - - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' - @ changeset: 5268f05aa1684cfb5741e9eb05eddcc1c5ee7508 - | desc: mod a, phase: draft - | o changeset: 542cb58df733ee48fa74729bd2cdb94c9310d362 - |/ desc: mv a b, phase: draft - o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0 - desc: initial, phase: draft - - $ hg rebase -s . -d 1 - rebasing 2:5268f05aa168 "mod a" (tip) - merging b and a to b - saved backup bundle to $TESTTMP/repo/.hg/strip-backup/5268f05aa168-284f6515-rebase.hg (glob) - $ cd .. - $ rm -rf server - $ rm -rf repo - -Check a few potential move candidates - $ hg init server - $ initclient server - $ cd server $ mkdir dir $ echo a > dir/a $ hg add dir/a @@ -210,43 +180,36 @@ Check a few potential move candidates $ echo b > dir2/a $ hg add dir2/a $ hg ci -qm 'create dir2/a' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 0 $ echo b > dir/a $ hg ci -qm 'mod dir/a' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: 6b2f4cece40fd320f41229f23821256ffc08efea - | desc: mod dir/a, phase: draft + | desc: mod dir/a | o changeset: 4494bf7efd2e0dfdd388e767fb913a8a3731e3fa - | | desc: create dir2/a, phase: public + | | desc: create dir2/a | o changeset: b1784dfab6ea6bfafeb11c0ac50a2981b0fe6ade - |/ desc: mv dir/a dir/b, phase: public + |/ desc: mv dir/a dir/b o changeset: 36859b8907c513a3a87ae34ba5b1e7eea8c20944 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 2 rebasing 3:6b2f4cece40f "mod dir/a" (tip) merging dir/b and dir/a to dir/b saved backup bundle to $TESTTMP/repo/.hg/strip-backup/6b2f4cece40f-503efe60-rebase.hg (glob) $ cd .. - $ rm -rf server $ rm -rf repo Move file in one branch and delete it in another - $ hg init server - $ initclient server - $ cd server +----------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg mv a b $ hg ci -m 'mv a b' $ hg up -q ".^" @@ -260,7 +223,7 @@ Move file in one branch and delete it in | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 |/ desc: mv a b, phase: draft o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial, phase: draft $ hg rebase -s 1 -d 2 rebasing 1:472e38d57782 "mv a b" @@ -269,34 +232,31 @@ Move file in one branch and delete it in $ ls b $ cd .. - $ rm -rf server $ rm -rf repo Move a directory in draft branch - $ hg init server - $ initclient server - $ cd server +-------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ mkdir dir $ echo a > dir/a $ hg add dir/a $ hg ci -qm initial - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ echo b > dir/a $ hg ci -qm 'mod dir/a' $ hg up -q ".^" $ hg mv -q dir/ dir2 $ hg ci -qm 'mv dir/ dir2/' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: a33d80b6e352591dfd82784e1ad6cdd86b25a239 - | desc: mv dir/ dir2/, phase: draft + | desc: mv dir/ dir2/ | o changeset: 6b2f4cece40fd320f41229f23821256ffc08efea - |/ desc: mod dir/a, phase: draft + |/ desc: mod dir/a o changeset: 36859b8907c513a3a87ae34ba5b1e7eea8c20944 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 1 rebasing 2:a33d80b6e352 "mv dir/ dir2/" (tip) @@ -307,9 +267,11 @@ Move a directory in draft branch $ rm -rf repo Move file twice and rebase mod on top of moves - $ hg init server - $ initclient server - $ cd server +---------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial @@ -317,60 +279,54 @@ Move file twice and rebase mod on top of $ hg ci -m 'mv a b' $ hg mv b c $ hg ci -m 'mv b c' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo - $ hg up -q 0 - $ echo c > a - $ hg ci -m 'mod a' - created new head - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' - @ changeset: d413169422167a3fa5275fc5d71f7dea9f5775f3 - | desc: mod a, phase: draft - | o changeset: d3efd280421d24f9f229997c19e654761c942a71 - | | desc: mv b c, phase: public - | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - |/ desc: mv a b, phase: public - o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public - $ hg rebase -s . -d 2 - rebasing 3:d41316942216 "mod a" (tip) - merging c and a to c - saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d41316942216-2b5949bc-rebase.hg (glob) - - $ cd .. - $ rm -rf server - $ rm -rf repo - -Move file twice and rebase moves on top of mods - $ hg init server - $ initclient server - $ cd server - $ echo a > a - $ hg add a - $ hg ci -m initial - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo - $ hg mv a b - $ hg ci -m 'mv a b' - $ hg mv b c - $ hg ci -m 'mv b c' $ hg up -q 0 $ echo c > a $ hg ci -m 'mod a' created new head - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: d413169422167a3fa5275fc5d71f7dea9f5775f3 - | desc: mod a, phase: draft + | desc: mod a | o changeset: d3efd280421d24f9f229997c19e654761c942a71 - | | desc: mv b c, phase: draft + | | desc: mv b c | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - |/ desc: mv a b, phase: draft + |/ desc: mv a b o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial + $ hg rebase -s . -d 2 + rebasing 3:d41316942216 "mod a" (tip) + merging c and a to c + saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d41316942216-2b5949bc-rebase.hg (glob) + + $ cd .. + $ rm -rf repo + +Move file twice and rebase moves on top of mods +----------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo + $ echo a > a + $ hg add a + $ hg ci -m initial + $ hg mv a b + $ hg ci -m 'mv a b' + $ hg mv b c + $ hg ci -m 'mv b c' + $ hg up -q 0 + $ echo c > a + $ hg ci -m 'mod a' + created new head + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' + @ changeset: d413169422167a3fa5275fc5d71f7dea9f5775f3 + | desc: mod a + | o changeset: d3efd280421d24f9f229997c19e654761c942a71 + | | desc: mv b c + | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 + |/ desc: mv a b + o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 + desc: initial $ hg rebase -s 1 -d . rebasing 1:472e38d57782 "mv a b" merging a and b to b @@ -379,13 +335,14 @@ Move file twice and rebase moves on top saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-ab8d3c58-rebase.hg (glob) $ cd .. - $ rm -rf server $ rm -rf repo Move one file and add another file in the same folder in one branch, modify file in another branch - $ hg init server - $ initclient server - $ cd server +-------------------------------------------------------------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial @@ -394,24 +351,20 @@ Move one file and add another file in th $ echo c > c $ hg add c $ hg ci -m 'add c' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 0 $ echo b > a $ hg ci -m 'mod a' created new head - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e - | desc: mod a, phase: draft + | desc: mod a | o changeset: b1a6187e79fbce851bb584eadcb0cc4a80290fd9 - | | desc: add c, phase: public + | | desc: add c | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - |/ desc: mv a b, phase: public + |/ desc: mv a b o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 2 rebasing 3:ef716627c70b "mod a" (tip) @@ -422,10 +375,14 @@ Move one file and add another file in th c $ cat b b + $ rm -rf repo Merge test - $ hg init server - $ cd server +---------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial @@ -435,19 +392,15 @@ Merge test $ hg mv a b $ hg ci -m 'mv a b' created new head - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 2 - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - | desc: mv a b, phase: public + | desc: mv a b | o changeset: b0357b07f79129a3d08a68621271ca1352ae8a09 - |/ desc: modify a, phase: public + |/ desc: modify a o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial $ hg merge 1 merging b and a to b @@ -457,35 +410,32 @@ Merge test $ ls b $ cd .. - $ rm -rf server $ rm -rf repo Copy and move file - $ hg init server - $ initclient server - $ cd server +------------------ + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial $ hg cp a c $ hg mv a b $ hg ci -m 'cp a c, mv a b' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q 0 $ echo b > a $ hg ci -m 'mod a' created new head - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e - | desc: mod a, phase: draft + | desc: mod a | o changeset: 4fc3fd13fbdb89ada6b75bfcef3911a689a0dde8 - |/ desc: cp a c, mv a b, phase: public + |/ desc: cp a c, mv a b o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial $ hg rebase -s . -d 1 rebasing 2:ef716627c70b "mod a" (tip) @@ -500,37 +450,34 @@ Copy and move file $ cat c b $ cd .. - $ rm -rf server $ rm -rf repo Do a merge commit with many consequent moves in one branch - $ hg init server - $ initclient server - $ cd server +---------------------------------------------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial $ echo b > a $ hg ci -qm 'mod a' - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ hg up -q ".^" $ hg mv a b $ hg ci -qm 'mv a b' $ hg mv b c $ hg ci -qm 'mv b c' $ hg up -q 1 - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' o changeset: d3efd280421d24f9f229997c19e654761c942a71 - | desc: mv b c, phase: draft + | desc: mv b c o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - | desc: mv a b, phase: draft + | desc: mv a b | @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e - |/ desc: mod a, phase: public + |/ desc: mod a o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial $ hg merge 3 merging a and c to c @@ -545,26 +492,23 @@ Do a merge commit with many consequent m | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 | | desc: mv a b, phase: draft o | changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e - |/ desc: mod a, phase: public + |/ desc: mod a, phase: draft o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial, phase: draft $ ls c $ cd .. - $ rm -rf server $ rm -rf repo Test shelve/unshelve - $ hg init server - $ initclient server - $ cd server +------------------- + + $ hg init repo + $ initclient repo + $ cd repo $ echo a > a $ hg add a $ hg ci -m initial - $ cd .. - $ hg clone -q server repo - $ initclient repo - $ cd repo $ echo b > a $ hg shelve shelved as default @@ -572,11 +516,11 @@ Test shelve/unshelve $ hg mv a b $ hg ci -m 'mv a b' - $ hg log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n' + $ hg log -G -T 'changeset: {node}\n desc: {desc}\n' @ changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22 - | desc: mv a b, phase: draft + | desc: mv a b o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98 - desc: initial, phase: public + desc: initial $ hg unshelve unshelving change 'default' rebasing shelved changes @@ -587,7 +531,6 @@ Test shelve/unshelve $ cat b b $ cd .. - $ rm -rf server $ rm -rf repo Test full copytrace ability on draft branch @@ -619,7 +562,7 @@ File directory and base name changed in o changeset 81973cd24b58db2fdf18ce3d64fb2cc3284e9ab3 desc initial, phase: draft - $ hg rebase -s . -d 1 + $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100 rebasing 2:6207d2d318e7 "mod a" (tip) merging dir2/b and dir1/a to dir2/b saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/6207d2d318e7-1c9779ad-rebase.hg (glob) @@ -627,11 +570,11 @@ File directory and base name changed in a b $ cd .. - $ rm -rf server $ rm -rf repo Move directory in one merge parent, while adding file to original directory in other merge parent. File moved on rebase. + $ hg init repo $ initclient repo $ mkdir repo/dir1 @@ -657,16 +600,16 @@ in other merge parent. File moved on reb o changeset a235dcce55dcf42034c4e374cb200662d0bb4a13 desc initial, phase: draft - $ hg rebase -s . -d 1 + $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100 rebasing 2:e8919e7df8d0 "mv dir1 dir2" (tip) saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/e8919e7df8d0-f62fab62-rebase.hg (glob) $ ls dir2 a dummy - $ rm -rf server $ rm -rf repo Testing the sourcecommitlimit config +----------------------------------- $ hg init repo $ initclient repo @@ -694,7 +637,7 @@ Testing the sourcecommitlimit config When the sourcecommitlimit is small and we have more drafts, we use heuristics only - $ hg rebase -s 8b6e13696 -d . --config experimental.copytrace.sourcecommitlimit=0 + $ hg rebase -s 8b6e13696 -d . rebasing 1:8b6e13696c38 "added more things to a" other [source] changed a which local [dest] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u @@ -706,7 +649,7 @@ fullcopytracing $ hg rebase --abort rebase aborted - $ hg rebase -s 8b6e13696 -d . + $ hg rebase -s 8b6e13696 -d . --config experimental.copytrace.sourcecommitlimit=100 rebasing 1:8b6e13696c38 "added more things to a" merging foo/bar and a to foo/bar saved backup bundle to $TESTTMP/repo/repo/repo/.hg/strip-backup/8b6e13696c38-fc14ac83-rebase.hg (glob)