test-graft.t
914 lines
| 22.8 KiB
| text/troff
|
Tads3Lexer
/ tests / test-graft.t
|
r28033 | $ cat >> $HGRCPATH <<EOF | ||
|
r28052 | > [extdiff] | ||
> # for portability: | ||||
> pdiff = sh "$RUNTESTDIR/pdiff" | ||||
|
r28033 | > EOF | ||
|
r15361 | Create a repo with some stuff in it: | ||
$ hg init a | ||||
$ cd a | ||||
$ echo a > a | ||||
$ echo a > d | ||||
$ echo a > e | ||||
$ hg ci -qAm0 | ||||
$ echo b > a | ||||
$ hg ci -m1 -u bar | ||||
$ hg mv a b | ||||
$ hg ci -m2 | ||||
$ hg cp b c | ||||
$ hg ci -m3 -u baz | ||||
$ echo b > d | ||||
$ echo f > e | ||||
$ hg ci -m4 | ||||
$ hg up -q 3 | ||||
$ echo b > e | ||||
$ hg branch -q stable | ||||
$ hg ci -m5 | ||||
|
r40460 | $ hg merge -q default --tool internal:local # for conflicts in e, choose 5 and ignore 4 | ||
|
r15361 | $ hg branch -q default | ||
$ hg ci -m6 | ||||
|
r15918 | $ hg phase --public 3 | ||
$ hg phase --force --secret 6 | ||||
|
r20117 | $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n' | ||
|
r15918 | @ test@6.secret: 6 | ||
|\ | ||||
| o test@5.draft: 5 | ||||
| | | ||||
o | test@4.draft: 4 | ||||
|/ | ||||
o baz@3.public: 3 | ||||
| | ||||
o test@2.public: 2 | ||||
| | ||||
o bar@1.public: 1 | ||||
| | ||||
o test@0.public: 0 | ||||
|
r40460 | Test --base for grafting the merge of 4 from the perspective of 5, thus only getting the change to d | ||
$ hg up -cqr 3 | ||||
$ hg graft -r 6 --base 5 | ||||
grafting 6:25a2b029d3ae "6" (tip) | ||||
merging e | ||||
$ hg st --change . | ||||
M d | ||||
$ hg -q strip . --config extensions.strip= | ||||
Test --base for collapsing changesets 2 and 3, thus getting both b and c | ||||
$ hg up -cqr 0 | ||||
$ hg graft -r 3 --base 1 | ||||
grafting 3:4c60f11aa304 "3" | ||||
merging a and b to b | ||||
merging a and c to c | ||||
$ hg st --change . | ||||
A b | ||||
A c | ||||
R a | ||||
$ hg -q strip . --config extensions.strip= | ||||
Specifying child as --base revision fails safely (perhaps slightly confusing, but consistent) | ||||
$ hg graft -r 2 --base 3 | ||||
grafting 2:5c095ad7e90f "2" | ||||
|
r42408 | note: possible conflict - c was deleted and renamed to: | ||
a | ||||
|
r40460 | note: graft of 2:5c095ad7e90f created no changes to commit | ||
|
r28121 | Can't continue without starting: | ||
|
r40460 | $ hg -q up -cr tip | ||
|
r28121 | $ hg rm -q e | ||
$ hg graft --continue | ||||
abort: no graft in progress | ||||
[255] | ||||
$ hg revert -r . -q e | ||||
|
r15361 | |||
Need to specify a rev: | ||||
$ hg graft | ||||
abort: no revisions specified | ||||
[255] | ||||
Can't graft ancestor: | ||||
$ hg graft 1 2 | ||||
|
r23507 | skipping ancestor revision 1:5d205f8b35b6 | ||
skipping ancestor revision 2:5c095ad7e90f | ||||
|
r15361 | [255] | ||
|
r16992 | Specify revisions with -r: | ||
$ hg graft -r 1 -r 2 | ||||
|
r23507 | skipping ancestor revision 1:5d205f8b35b6 | ||
skipping ancestor revision 2:5c095ad7e90f | ||||
|
r16992 | [255] | ||
$ hg graft -r 1 2 | ||||
|
r27899 | warning: inconsistent use of --rev might give unexpected revision ordering! | ||
|
r23507 | skipping ancestor revision 2:5c095ad7e90f | ||
skipping ancestor revision 1:5d205f8b35b6 | ||||
|
r16992 | [255] | ||
|
r41210 | Conflicting date/user options: | ||
$ hg up -q 0 | ||||
$ hg graft -U --user foo 2 | ||||
|
r44345 | abort: cannot specify both --user and --currentuser | ||
|
r41210 | [255] | ||
$ hg graft -D --date '0 0' 2 | ||||
|
r44345 | abort: cannot specify both --date and --currentdate | ||
|
r41210 | [255] | ||
|
r15361 | Can't graft with dirty wd: | ||
$ hg up -q 0 | ||||
$ echo foo > a | ||||
$ hg graft 1 | ||||
|
r19804 | abort: uncommitted changes | ||
|
r15361 | [255] | ||
$ hg revert a | ||||
Graft a rename: | ||||
|
r21416 | (this also tests that editor is invoked if '--edit' is specified) | ||
|
r15361 | |||
|
r21416 | $ hg status --rev "2^1" --rev 2 | ||
A b | ||||
R a | ||||
$ HGEDITOR=cat hg graft 2 -u foo --edit | ||||
|
r23505 | grafting 2:5c095ad7e90f "2" | ||
|
r15361 | merging a and b to b | ||
|
r21416 | 2 | ||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: foo | ||||
HG: branch 'default' | ||||
|
r22897 | HG: added b | ||
|
r21416 | HG: removed a | ||
|
r15361 | $ hg export tip --git | ||
# HG changeset patch | ||||
# User foo | ||||
# Date 0 0 | ||||
|
r18648 | # Thu Jan 01 00:00:00 1970 +0000 | ||
|
r16601 | # Node ID ef0ef43d49e79e81ddafdc7997401ba0041efc82 | ||
|
r15361 | # Parent 68795b066622ca79a25816a662041d8f78f3cd9e | ||
2 | ||||
diff --git a/a b/b | ||||
rename from a | ||||
rename to b | ||||
Look for extra:source | ||||
$ hg log --debug -r tip | ||||
|
r16601 | changeset: 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82 | ||
|
r15361 | tag: tip | ||
|
r15907 | phase: draft | ||
|
r15361 | parent: 0:68795b066622ca79a25816a662041d8f78f3cd9e | ||
parent: -1:0000000000000000000000000000000000000000 | ||||
|
r16601 | manifest: 7:e59b6b228f9cbf9903d5e9abf996e083a1f533eb | ||
|
r15361 | user: foo | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: b | ||||
files-: a | ||||
extra: branch=default | ||||
extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4 | ||||
description: | ||||
2 | ||||
Graft out of order, skipping a merge and a duplicate | ||||
|
r21416 | (this also tests that editor is not invoked if '--edit' is not specified) | ||
|
r15361 | |||
|
r16389 | $ hg graft 1 5 4 3 'merge()' 2 -n | ||
skipping ungraftable merge revision 6 | ||||
|
r23507 | skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | ||
|
r23505 | grafting 1:5d205f8b35b6 "1" | ||
grafting 5:97f8bfe72746 "5" | ||||
grafting 4:9c233e8e184d "4" | ||||
grafting 3:4c60f11aa304 "3" | ||||
|
r16389 | |||
|
r27173 | $ HGEDITOR=cat hg graft 1 5 'merge()' 2 --debug | ||
|
r15361 | skipping ungraftable merge revision 6 | ||
scanning for duplicate grafts | ||||
|
r23507 | skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | ||
|
r23505 | grafting 1:5d205f8b35b6 "1" | ||
|
r15361 | unmatched files in local: | ||
b | ||||
|
r16795 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
|
r44679 | on local side: | ||
src: 'a' -> dst: 'b' * | ||||
|
r15361 | checking for directory renames | ||
resolving manifests | ||||
|
r18605 | branchmerge: True, force: True, partial: False | ||
|
r16601 | ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6 | ||
|
r21391 | preserving b for resolve of b | ||
|
r28318 | starting 4 threads for background file closing (?) | ||
|
r26618 | b: local copied/moved from a -> m (premerge) | ||
|
r27161 | picked tool ':merge' for b (binary False symlink False changedelete False) | ||
|
r16601 | merging b and a to b | ||
my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622 | ||||
premerge successful | ||||
|
r23749 | committing files: | ||
|
r16601 | b | ||
|
r23749 | committing manifest | ||
committing changelog | ||||
|
r32267 | updating the branch cache | ||
|
r23505 | grafting 5:97f8bfe72746 "5" | ||
|
r42408 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
|
r44679 | on local side: | ||
src: 'c' -> dst: 'b' | ||||
|
r42408 | checking for directory renames | ||
|
r15361 | resolving manifests | ||
|
r18605 | branchmerge: True, force: True, partial: False | ||
|
r16601 | ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746 | ||
|
r21389 | e: remote is newer -> g | ||
|
r18631 | getting e | ||
|
r23749 | committing files: | ||
|
r15361 | e | ||
|
r23749 | committing manifest | ||
committing changelog | ||||
|
r32267 | updating the branch cache | ||
|
r27173 | $ HGEDITOR=cat hg graft 4 3 --log --debug | ||
scanning for duplicate grafts | ||||
|
r23505 | grafting 4:9c233e8e184d "4" | ||
|
r42408 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
|
r44679 | on local side: | ||
src: 'c' -> dst: 'b' | ||||
|
r42408 | checking for directory renames | ||
|
r15361 | resolving manifests | ||
|
r18605 | branchmerge: True, force: True, partial: False | ||
|
r16601 | ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d | ||
|
r21391 | preserving e for resolve of e | ||
|
r21389 | d: remote is newer -> g | ||
|
r21391 | getting d | ||
|
r26618 | e: versions differ -> m (premerge) | ||
|
r27161 | picked tool ':merge' for e (binary False symlink False changedelete False) | ||
|
r15361 | merging e | ||
|
r28011 | my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304 | ||
|
r26618 | e: versions differ -> m (merge) | ||
|
r27161 | picked tool ':merge' for e (binary False symlink False changedelete False) | ||
|
r28011 | my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304 | ||
|
r26614 | warning: conflicts while merging e! (edit, then use 'hg resolve --mark') | ||
|
r15361 | abort: unresolved conflicts, can't continue | ||
|
r38240 | (use 'hg resolve' and 'hg graft --continue') | ||
|
r15361 | [255] | ||
|
r27172 | Summary should mention graft: | ||
$ hg summary |grep graft | ||||
commit: 2 modified, 2 unknown, 1 unresolved (graft in progress) | ||||
|
r33766 | Using status to get more context | ||
$ hg status --verbose | ||||
M d | ||||
M e | ||||
? a.orig | ||||
? e.orig | ||||
# The repository is in an unfinished *graft* state. | ||||
# Unresolved merge conflicts: | ||||
# | ||||
# e | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
|
r38360 | # To continue: hg graft --continue | ||
|
r39002 | # To abort: hg graft --abort | ||
|
r42732 | # To stop: hg graft --stop | ||
|
r33766 | |||
|
r19253 | Commit while interrupted should fail: | ||
$ hg ci -m 'commit interrupted graft' | ||||
|
r19476 | abort: graft in progress | ||
|
r38331 | (use 'hg graft --continue' or 'hg graft --stop' to stop) | ||
|
r19253 | [255] | ||
|
r19332 | Abort the graft and try committing: | ||
$ hg up -C . | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo c >> e | ||||
$ hg ci -mtest | ||||
|
r23514 | $ hg strip . --config extensions.strip= | ||
|
r19332 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob) | ||||
Graft again: | ||||
$ hg graft 1 5 4 3 'merge()' 2 | ||||
skipping ungraftable merge revision 6 | ||||
|
r23507 | skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | ||
skipping revision 1:5d205f8b35b6 (already grafted to 8:6b9e5368ca4e) | ||||
skipping revision 5:97f8bfe72746 (already grafted to 9:1905859650ec) | ||||
|
r23505 | grafting 4:9c233e8e184d "4" | ||
|
r19332 | merging e | ||
|
r26614 | warning: conflicts while merging e! (edit, then use 'hg resolve --mark') | ||
|
r19332 | abort: unresolved conflicts, can't continue | ||
|
r28963 | (use 'hg resolve' and 'hg graft --continue') | ||
|
r19332 | [255] | ||
|
r15361 | Continue without resolve should fail: | ||
$ hg graft -c | ||||
|
r23505 | grafting 4:9c233e8e184d "4" | ||
|
r29975 | abort: unresolved merge conflicts (see 'hg help resolve') | ||
|
r15361 | [255] | ||
Fix up: | ||||
$ echo b > e | ||||
$ hg resolve -m e | ||||
|
r21947 | (no more unresolved files) | ||
|
r27625 | continue: hg graft --continue | ||
|
r15361 | |||
Continue with a revision should fail: | ||||
$ hg graft -c 6 | ||||
abort: can't specify --continue and revisions | ||||
[255] | ||||
|
r16992 | $ hg graft -c -r 6 | ||
abort: can't specify --continue and revisions | ||||
[255] | ||||
|
r15361 | Continue for real, clobber usernames | ||
$ hg graft -c -U | ||||
|
r23505 | grafting 4:9c233e8e184d "4" | ||
grafting 3:4c60f11aa304 "3" | ||||
|
r15361 | |||
Compare with original: | ||||
$ hg diff -r 6 | ||||
$ hg status --rev 0:. -C | ||||
M d | ||||
M e | ||||
A b | ||||
a | ||||
A c | ||||
a | ||||
R a | ||||
View graph: | ||||
|
r20117 | $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n' | ||
|
r16601 | @ test@11.draft: 3 | ||
| | ||||
o test@10.draft: 4 | ||||
|
r15361 | | | ||
|
r16601 | o test@9.draft: 5 | ||
|
r15361 | | | ||
|
r16601 | o bar@8.draft: 1 | ||
|
r15361 | | | ||
|
r15918 | o foo@7.draft: 2 | ||
|
r15361 | | | ||
|
r15918 | | o test@6.secret: 6 | ||
|
r15361 | | |\ | ||
|
r15918 | | | o test@5.draft: 5 | ||
|
r15361 | | | | | ||
|
r15918 | | o | test@4.draft: 4 | ||
|
r15361 | | |/ | ||
|
r15918 | | o baz@3.public: 3 | ||
|
r15361 | | | | ||
|
r15918 | | o test@2.public: 2 | ||
|
r15361 | | | | ||
|
r15918 | | o bar@1.public: 1 | ||
|
r15361 | |/ | ||
|
r15918 | o test@0.public: 0 | ||
|
r15361 | |||
|
r15506 | Graft again onto another branch should preserve the original source | ||
$ hg up -q 0 | ||||
$ echo 'g'>g | ||||
$ hg add g | ||||
$ hg ci -m 7 | ||||
created new head | ||||
$ hg graft 7 | ||||
|
r23505 | grafting 7:ef0ef43d49e7 "2" | ||
|
r15506 | |||
$ hg log -r 7 --template '{rev}:{node}\n' | ||||
|
r16601 | 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82 | ||
|
r15506 | $ hg log -r 2 --template '{rev}:{node}\n' | ||
2:5c095ad7e90f871700f02dd1fa5012cb4498a2d4 | ||||
$ hg log --debug -r tip | ||||
|
r24644 | changeset: 13:7a4785234d87ec1aa420ed6b11afe40fa73e12a9 | ||
|
r15506 | tag: tip | ||
|
r15907 | phase: draft | ||
|
r16601 | parent: 12:b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f | ||
|
r15506 | parent: -1:0000000000000000000000000000000000000000 | ||
|
r16601 | manifest: 13:dc313617b8c32457c0d589e0dbbedfe71f3cd637 | ||
|
r15506 | user: foo | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
files+: b | ||||
files-: a | ||||
extra: branch=default | ||||
|
r24644 | extra: intermediate-source=ef0ef43d49e79e81ddafdc7997401ba0041efc82 | ||
|
r15506 | extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4 | ||
description: | ||||
2 | ||||
|
r15508 | Disallow grafting an already grafted cset onto its original branch | ||
$ hg up -q 6 | ||||
$ hg graft 7 | ||||
|
r23507 | skipping already grafted revision 7:ef0ef43d49e7 (was grafted from 2:5c095ad7e90f) | ||
|
r15508 | [255] | ||
|
r28052 | $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13 | ||
|
r28034 | --- */hg-5c095ad7e90f.patch * (glob) | ||
+++ */hg-7a4785234d87.patch * (glob) | ||||
|
r26228 | @@ -1,18 +1,18 @@ | ||
# HG changeset patch | ||||
-# User test | ||||
+# User foo | ||||
# Date 0 0 | ||||
# Thu Jan 01 00:00:00 1970 +0000 | ||||
-# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4 | ||||
-# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04 | ||||
+# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9 | ||||
+# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f | ||||
2 | ||||
-diff -r 5d205f8b35b6 -r 5c095ad7e90f a | ||||
+diff -r b592ea63bb0c -r 7a4785234d87 a | ||||
--- a/a Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +0,0 @@ | ||||
--b | ||||
-diff -r 5d205f8b35b6 -r 5c095ad7e90f b | ||||
+-a | ||||
+diff -r b592ea63bb0c -r 7a4785234d87 b | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/b Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
-+b | ||||
++a | ||||
[1] | ||||
|
r28052 | $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13 -X . | ||
|
r28034 | --- */hg-5c095ad7e90f.patch * (glob) | ||
+++ */hg-7a4785234d87.patch * (glob) | ||||
|
r26229 | @@ -1,8 +1,8 @@ | ||
# HG changeset patch | ||||
-# User test | ||||
+# User foo | ||||
# Date 0 0 | ||||
# Thu Jan 01 00:00:00 1970 +0000 | ||||
-# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4 | ||||
-# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04 | ||||
+# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9 | ||||
+# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f | ||||
2 | ||||
[1] | ||||
|
r26228 | |||
|
r15508 | Disallow grafting already grafted csets with the same origin onto each other | ||
|
r16601 | $ hg up -q 13 | ||
|
r15508 | $ hg graft 2 | ||
|
r24644 | skipping revision 2:5c095ad7e90f (already grafted to 13:7a4785234d87) | ||
|
r15508 | [255] | ||
$ hg graft 7 | ||||
|
r24644 | skipping already grafted revision 7:ef0ef43d49e7 (13:7a4785234d87 also has origin 2:5c095ad7e90f) | ||
|
r15508 | [255] | ||
$ hg up -q 7 | ||||
$ hg graft 2 | ||||
|
r23507 | skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7) | ||
|
r15508 | [255] | ||
$ hg graft tip | ||||
|
r24644 | skipping already grafted revision 13:7a4785234d87 (7:ef0ef43d49e7 also has origin 2:5c095ad7e90f) | ||
|
r15508 | [255] | ||
|
r17045 | |||
|
r16660 | Graft with --log | ||
$ hg up -Cq 1 | ||||
$ hg graft 3 --log -u foo | ||||
|
r23505 | grafting 3:4c60f11aa304 "3" | ||
|
r30188 | $ hg log --template '{rev}:{node|short} {parents} {desc}\n' -r tip | ||
14:0c921c65ef1e 1:5d205f8b35b6 3 | ||||
|
r16660 | (grafted from 4c60f11aa304a54ae1c199feb94e7fc771e51ed8) | ||
|
r16913 | |||
|
r17045 | Resolve conflicted graft | ||
$ hg up -q 0 | ||||
$ echo b > a | ||||
$ hg ci -m 8 | ||||
created new head | ||||
|
r23463 | $ echo c > a | ||
|
r17045 | $ hg ci -m 9 | ||
$ hg graft 1 --tool internal:fail | ||||
|
r23505 | grafting 1:5d205f8b35b6 "1" | ||
|
r17045 | abort: unresolved conflicts, can't continue | ||
|
r28963 | (use 'hg resolve' and 'hg graft --continue') | ||
|
r17045 | [255] | ||
$ hg resolve --all | ||||
merging a | ||||
|
r26614 | warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||
|
r23463 | [1] | ||
$ cat a | ||||
<<<<<<< local: aaa4406d4f0a - test: 9 | ||||
c | ||||
======= | ||||
b | ||||
|
r30460 | >>>>>>> graft: 5d205f8b35b6 - bar: 1 | ||
|
r23463 | $ echo b > a | ||
$ hg resolve -m a | ||||
|
r21947 | (no more unresolved files) | ||
|
r27625 | continue: hg graft --continue | ||
|
r17045 | $ hg graft -c | ||
|
r23505 | grafting 1:5d205f8b35b6 "1" | ||
|
r17045 | $ hg export tip --git | ||
# HG changeset patch | ||||
# User bar | ||||
# Date 0 0 | ||||
|
r18648 | # Thu Jan 01 00:00:00 1970 +0000 | ||
|
r23463 | # Node ID f67661df0c4804d301f064f332b57e7d5ddaf2be | ||
# Parent aaa4406d4f0ae9befd6e58c82ec63706460cbca6 | ||||
|
r17045 | 1 | ||
diff --git a/a b/a | ||||
--- a/a | ||||
+++ b/a | ||||
@@ -1,1 +1,1 @@ | ||||
|
r23463 | -c | ||
|
r17045 | +b | ||
Resolve conflicted graft with rename | ||||
$ echo c > a | ||||
$ hg ci -m 10 | ||||
$ hg graft 2 --tool internal:fail | ||||
|
r23505 | grafting 2:5c095ad7e90f "2" | ||
|
r17045 | abort: unresolved conflicts, can't continue | ||
|
r28963 | (use 'hg resolve' and 'hg graft --continue') | ||
|
r17045 | [255] | ||
$ hg resolve --all | ||||
merging a and b to b | ||||
|
r21947 | (no more unresolved files) | ||
|
r27625 | continue: hg graft --continue | ||
|
r17045 | $ hg graft -c | ||
|
r23505 | grafting 2:5c095ad7e90f "2" | ||
|
r17045 | $ hg export tip --git | ||
# HG changeset patch | ||||
# User test | ||||
# Date 0 0 | ||||
|
r18648 | # Thu Jan 01 00:00:00 1970 +0000 | ||
|
r23463 | # Node ID 9627f653b421c61fc1ea4c4e366745070fa3d2bc | ||
# Parent ee295f490a40b97f3d18dd4c4f1c8936c233b612 | ||||
|
r17045 | 2 | ||
diff --git a/a b/b | ||||
rename from a | ||||
rename to b | ||||
|
r17185 | |||
Test simple origin(), with and without args | ||||
$ hg log -r 'origin()' | ||||
changeset: 1:5d205f8b35b6 | ||||
user: bar | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 1 | ||||
changeset: 2:5c095ad7e90f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 3:4c60f11aa304 | ||||
user: baz | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 3 | ||||
changeset: 4:9c233e8e184d | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 4 | ||||
changeset: 5:97f8bfe72746 | ||||
branch: stable | ||||
parent: 3:4c60f11aa304 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 5 | ||||
$ hg log -r 'origin(7)' | ||||
changeset: 2:5c095ad7e90f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
Now transplant a graft to test following through copies | ||||
$ hg up -q 0 | ||||
$ hg branch -q dev | ||||
$ hg ci -qm "dev branch" | ||||
$ hg --config extensions.transplant= transplant -q 7 | ||||
$ hg log -r 'origin(.)' | ||||
changeset: 2:5c095ad7e90f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r21765 | Test that the graft and transplant markers in extra are converted, allowing | ||
origin() to still work. Note that these recheck the immediately preceeding two | ||||
tests. | ||||
$ hg --quiet --config extensions.convert= --config convert.hg.saverev=True convert . ../converted | ||||
The graft case | ||||
$ hg -R ../converted log -r 7 --template "{rev}: {node}\n{join(extras, '\n')}\n" | ||||
7: 7ae846e9111fc8f57745634250c7b9ac0a60689b | ||||
branch=default | ||||
convert_revision=ef0ef43d49e79e81ddafdc7997401ba0041efc82 | ||||
source=e0213322b2c1a5d5d236c74e79666441bee67a7d | ||||
$ hg -R ../converted log -r 'origin(7)' | ||||
changeset: 2:e0213322b2c1 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r25589 | Test that template correctly expands more than one 'extra' (issue4362), and that | ||
'intermediate-source' is converted. | ||||
$ hg -R ../converted log -r 13 --template "{extras % ' Extra: {extra}\n'}" | ||||
|
r23167 | Extra: branch=default | ||
|
r25589 | Extra: convert_revision=7a4785234d87ec1aa420ed6b11afe40fa73e12a9 | ||
Extra: intermediate-source=7ae846e9111fc8f57745634250c7b9ac0a60689b | ||||
|
r23167 | Extra: source=e0213322b2c1a5d5d236c74e79666441bee67a7d | ||
|
r21765 | The transplant case | ||
$ hg -R ../converted log -r tip --template "{rev}: {node}\n{join(extras, '\n')}\n" | ||||
21: fbb6c5cc81002f2b4b49c9d731404688bcae5ade | ||||
branch=dev | ||||
convert_revision=7e61b508e709a11d28194a5359bc3532d910af21 | ||||
|
r31452 | transplant_source=z\xe8F\xe9\x11\x1f\xc8\xf5wEcBP\xc7\xb9\xac\n`h\x9b | ||
|
r21765 | $ hg -R ../converted log -r 'origin(tip)' | ||
changeset: 2:e0213322b2c1 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r17186 | Test simple destination | ||
$ hg log -r 'destination()' | ||||
changeset: 7:ef0ef43d49e7 | ||||
parent: 0:68795b066622 | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 8:6b9e5368ca4e | ||||
user: bar | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 1 | ||||
changeset: 9:1905859650ec | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 5 | ||||
changeset: 10:52dc0b4c6907 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 4 | ||||
changeset: 11:882b35362a6b | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 3 | ||||
|
r24644 | changeset: 13:7a4785234d87 | ||
|
r17186 | user: foo | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r30188 | changeset: 14:0c921c65ef1e | ||
|
r17186 | parent: 1:5d205f8b35b6 | ||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 3 | ||||
|
r23463 | changeset: 17:f67661df0c48 | ||
|
r17186 | user: bar | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 1 | ||||
|
r23463 | changeset: 19:9627f653b421 | ||
|
r17186 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 21:7e61b508e709 | ||||
branch: dev | ||||
tag: tip | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
$ hg log -r 'destination(2)' | ||||
changeset: 7:ef0ef43d49e7 | ||||
parent: 0:68795b066622 | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r24644 | changeset: 13:7a4785234d87 | ||
|
r17186 | user: foo | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r23463 | changeset: 19:9627f653b421 | ||
|
r17186 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 21:7e61b508e709 | ||||
branch: dev | ||||
tag: tip | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
Transplants of grafts can find a destination... | ||||
$ hg log -r 'destination(7)' | ||||
changeset: 21:7e61b508e709 | ||||
branch: dev | ||||
tag: tip | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
... grafts of grafts unfortunately can't | ||||
|
r39147 | $ hg graft -q 13 --debug | ||
scanning for duplicate grafts | ||||
grafting 13:7a4785234d87 "2" | ||||
|
r42340 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
|
r44679 | on local side: | ||
src: 'a' -> dst: 'b' * | ||||
on remote side: | ||||
src: 'a' -> dst: 'b' * | ||||
|
r42340 | checking for directory renames | ||
|
r39147 | resolving manifests | ||
branchmerge: True, force: True, partial: False | ||||
ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87 | ||||
|
r39223 | starting 4 threads for background file closing (?) | ||
|
r44929 | nothing to commit, clearing merge state | ||
|
r44550 | note: graft of 13:7a4785234d87 created no changes to commit | ||
|
r17186 | $ hg log -r 'destination(13)' | ||
All copies of a cset | ||||
$ hg log -r 'origin(13) or destination(origin(13))' | ||||
changeset: 2:5c095ad7e90f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 7:ef0ef43d49e7 | ||||
parent: 0:68795b066622 | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r24644 | changeset: 13:7a4785234d87 | ||
|
r17186 | user: foo | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r23463 | changeset: 19:9627f653b421 | ||
|
r17186 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
changeset: 21:7e61b508e709 | ||||
branch: dev | ||||
tag: tip | ||||
user: foo | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 2 | ||||
|
r21200 | |||
|
r44496 | graft skips ancestors | ||
|
r21200 | |||
|
r44496 | $ hg graft 21 3 | ||
|
r23507 | skipping ancestor revision 21:7e61b508e709 | ||
|
r44496 | grafting 3:4c60f11aa304 "3" | ||
merging b and c to c | ||||
|
r22302 | |||
|
r21979 | graft with --force (still doesn't graft merges) | ||
$ hg graft 19 0 6 | ||||
skipping ungraftable merge revision 6 | ||||
|
r23507 | skipping ancestor revision 0:68795b066622 | ||
|
r44550 | grafting 19:9627f653b421 "2" | ||
merging b | ||||
note: graft of 19:9627f653b421 created no changes to commit | ||||
|
r21979 | $ hg graft 19 0 6 --force | ||
skipping ungraftable merge revision 6 | ||||
|
r23505 | grafting 19:9627f653b421 "2" | ||
|
r21979 | merging b | ||
|
r44550 | note: graft of 19:9627f653b421 created no changes to commit | ||
|
r23505 | grafting 0:68795b066622 "0" | ||
|
r21979 | |||
|
r44867 | graft --force after backout. Do the backout with graft too, to make | ||
sure we support issue6248. | ||||
|
r21979 | |||
$ echo abc > a | ||||
|
r44550 | $ hg ci -m 24 | ||
|
r44867 | $ hg graft --base . -r ".^" --no-commit | ||
grafting 23:b1cac6de36a9 "0" | ||||
$ hg commit -m 'Backed out changeset 2e7ea477be26' | ||||
|
r44550 | $ hg graft 24 | ||
skipping ancestor revision 24:2e7ea477be26 | ||||
|
r21979 | [255] | ||
|
r44550 | $ hg graft 24 --force | ||
grafting 24:2e7ea477be26 "24" | ||||
|
r21979 | merging a | ||
$ cat a | ||||
abc | ||||
|
r21980 | graft --continue after --force | ||
|
r23463 | $ echo def > a | ||
|
r44550 | $ hg ci -m 27 | ||
$ hg graft 24 --force --tool internal:fail | ||||
grafting 24:2e7ea477be26 "24" | ||||
|
r21980 | abort: unresolved conflicts, can't continue | ||
|
r28963 | (use 'hg resolve' and 'hg graft --continue') | ||
|
r21980 | [255] | ||
$ hg resolve --all | ||||
merging a | ||||
|
r26614 | warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||
|
r23463 | [1] | ||
$ echo abc > a | ||||
$ hg resolve -m a | ||||
|
r21980 | (no more unresolved files) | ||
|
r27625 | continue: hg graft --continue | ||
|
r21980 | $ hg graft -c | ||
|
r44550 | grafting 24:2e7ea477be26 "24" | ||
|
r21980 | $ cat a | ||
abc | ||||
|
r22302 | |||
Continue testing same origin policy, using revision numbers from test above | ||||
but do some destructive editing of the repo: | ||||
$ hg up -qC 7 | ||||
$ hg tag -l -r 13 tmp | ||||
|
r23514 | $ hg --config extensions.strip= strip 2 | ||
|
r35394 | saved backup bundle to $TESTTMP/a/.hg/strip-backup/5c095ad7e90f-d323a1e4-backup.hg | ||
|
r22302 | $ hg graft tmp | ||
|
r24644 | skipping already grafted revision 8:7a4785234d87 (2:ef0ef43d49e7 also has unknown origin 5c095ad7e90f) | ||
|
r22302 | [255] | ||
|
r23504 | |||
Empty graft | ||||
|
r44550 | $ hg up -qr 22 | ||
|
r23504 | $ hg tag -f something | ||
|
r44550 | $ hg graft -qr 23 | ||
$ hg graft -f 23 | ||||
grafting 23:72d9c7c75bcc "24" | ||||
note: graft of 23:72d9c7c75bcc created no changes to commit | ||||
|
r24643 | |||
$ cd .. | ||||
Graft to duplicate a commit | ||||
$ hg init graftsibling | ||||
$ cd graftsibling | ||||
$ touch a | ||||
$ hg commit -qAm a | ||||
$ touch b | ||||
$ hg commit -qAm b | ||||
$ hg log -G -T '{rev}\n' | ||||
@ 1 | ||||
| | ||||
o 0 | ||||
$ hg up -q 0 | ||||
$ hg graft -r 1 | ||||
grafting 1:0e067c57feba "b" (tip) | ||||
$ hg log -G -T '{rev}\n' | ||||
@ 2 | ||||
| | ||||
| o 1 | ||||
|/ | ||||
o 0 | ||||
|
r24644 | Graft to duplicate a commit twice | ||
$ hg up -q 0 | ||||
$ hg graft -r 2 | ||||
grafting 2:044ec77f6389 "b" (tip) | ||||
$ hg log -G -T '{rev}\n' | ||||
@ 3 | ||||
| | ||||
| o 2 | ||||
|/ | ||||
| o 1 | ||||
|/ | ||||
o 0 | ||||