Mercurial > hg
changeset 34567:1b261be2033b
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
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Tue, 10 Oct 2017 01:03:24 +0530 |
parents | 60213a2eca81 |
children | 63c19b7fa100 |
files | tests/test-copytrace-heuristics.t |
diffstat | 1 files changed, 186 insertions(+), 243 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-copytrace-heuristics.t Thu Oct 05 13:38:48 2017 -0700 +++ b/tests/test-copytrace-heuristics.t Tue Oct 10 01:03:24 2017 +0530 @@ -6,6 +6,7 @@ > cat >> $1/.hg/hgrc <<EOF > [experimental] > copytrace = heuristics + > copytrace.sourcecommitlimit = -1 > EOF > } > __EOF__ @@ -17,9 +18,16 @@ > 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 @@ $ 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 @@ 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 @@ $ 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 @@ [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 @@ $ 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 @@ $ 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 @@ | 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 @@ $ 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 @@ $ 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 @@ $ 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 @@ 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 @@ $ 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 @@ 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 @@ $ 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 @@ $ 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 @@ $ 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 @@ | 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 @@ $ 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 @@ $ cat b b $ cd .. - $ rm -rf server $ rm -rf repo Test full copytrace ability on draft branch @@ -619,7 +562,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ $ 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)