D991: tests: optimize test-copytrace-heuristics.t
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Mon Oct 9 21:09:23 UTC 2017
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
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
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D991
AFFECTED FILES
tests/test-copytrace-heuristics.t
CHANGE DETAILS
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 @@
> 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,57 +38,51 @@
$ 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)
merging b and a to b
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
$ hg rm a
$ 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,116 +92,84 @@
[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
$ echo c > c
$ hg add c
$ 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,43 +223,40 @@
| 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"
saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-17d50e29-rebase.hg (glob)
$ hg up -q c492ed3c7e35dcd1dc938053b8adf56e2cfbd062
$ 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,111 +267,104 @@
$ 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
$ hg mv a b
$ 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
rebasing 2:d3efd280421d "mv b c"
merging b and c to c
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
$ hg mv a b
$ hg ci -m 'mv a b'
$ 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,38 +492,35 @@
| 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
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ 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,19 +562,19 @@
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)
$ cat dir2/b
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)
To: pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list