test-copy-move-merge.t
255 lines
| 5.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-copy-move-merge.t
|
r34080 | Test for the full copytracing algorithm | ||
======================================= | ||||
r44726 | ||||
Initial Setup | ||||
============= | ||||
use git diff to see rename | ||||
$ cat << EOF >> $HGRCPATH | ||||
> [diff] | ||||
> git=yes | ||||
> EOF | ||||
Setup an history where one side copy and rename a file (and update it) while the other side update it. | ||||
|
r13956 | $ hg init t | ||
|
r11972 | $ cd t | ||
$ echo 1 > a | ||||
|
r12156 | $ hg ci -qAm "first" | ||
|
r11972 | |||
$ hg cp a b | ||||
$ hg mv a c | ||||
$ echo 2 >> b | ||||
$ echo 2 >> c | ||||
|
r12156 | $ hg ci -qAm "second" | ||
|
r11972 | |||
$ hg co -C 0 | ||||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ echo 0 > a | ||||
$ echo 1 >> a | ||||
|
r12156 | $ hg ci -qAm "other" | ||
|
r11972 | |||
r44726 | $ hg log -G --patch | |||
@ changeset: 2:add3f11052fa | ||||
| tag: tip | ||||
| parent: 0:b8bf91eeebbc | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: other | ||||
| | ||||
| diff --git a/a b/a | ||||
| --- a/a | ||||
| +++ b/a | ||||
| @@ -1,1 +1,2 @@ | ||||
| +0 | ||||
| 1 | ||||
| | ||||
| o changeset: 1:17c05bb7fcb6 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: second | ||||
| | ||||
| diff --git a/a b/b | ||||
| rename from a | ||||
| rename to b | ||||
| --- a/a | ||||
| +++ b/b | ||||
| @@ -1,1 +1,2 @@ | ||||
| 1 | ||||
| +2 | ||||
| diff --git a/a b/c | ||||
| copy from a | ||||
| copy to c | ||||
| --- a/a | ||||
| +++ b/c | ||||
| @@ -1,1 +1,2 @@ | ||||
| 1 | ||||
| +2 | ||||
| | ||||
o changeset: 0:b8bf91eeebbc | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: first | ||||
diff --git a/a b/a | ||||
new file mode 100644 | ||||
--- /dev/null | ||||
+++ b/a | ||||
@@ -0,0 +1,1 @@ | ||||
+1 | ||||
Test Simple Merge | ||||
================= | ||||
|
r11972 | $ hg merge --debug | ||
unmatched files in other: | ||||
b | ||||
c | ||||
|
r16795 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
|
r44679 | on remote side: | ||
src: 'a' -> dst: 'b' * | ||||
src: 'a' -> dst: 'c' * | ||||
|
r11972 | checking for directory renames | ||
resolving manifests | ||||
|
r18605 | branchmerge: True, force: False, partial: False | ||
|
r15625 | ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6 | ||
|
r21391 | preserving a for resolve of b | ||
preserving a for resolve of c | ||||
removing a | ||||
|
r28318 | starting 4 threads for background file closing (?) | ||
|
r26618 | b: remote moved from a -> m (premerge) | ||
|
r27161 | picked tool ':merge' for b (binary False symlink False changedelete False) | ||
|
r11972 | merging a and b to b | ||
|
r12156 | my b@add3f11052fa+ other b@17c05bb7fcb6 ancestor a@b8bf91eeebbc | ||
|
r11972 | premerge successful | ||
|
r26618 | c: remote moved from a -> m (premerge) | ||
|
r27161 | picked tool ':merge' for c (binary False symlink False changedelete False) | ||
|
r11972 | merging a and c to c | ||
|
r12156 | my c@add3f11052fa+ other c@17c05bb7fcb6 ancestor a@b8bf91eeebbc | ||
|
r11972 | premerge successful | ||
0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
file b | ||||
$ cat b | ||||
0 | ||||
1 | ||||
2 | ||||
file c | ||||
$ cat c | ||||
0 | ||||
1 | ||||
2 | ||||
|
r16913 | |||
|
r26013 | Test disabling copy tracing | ||
r44726 | =========================== | |||
|
r26013 | |||
r44726 | first verify copy metadata was kept | |||
----------------------------------- | ||||
|
r26013 | |||
$ hg up -qC 2 | ||||
$ hg rebase --keep -d 1 -b 2 --config extensions.rebase= | ||||
|
r46356 | rebasing 2:add3f11052fa tip "other" | ||
|
r26013 | merging b and a to b | ||
merging c and a to c | ||||
$ cat b | ||||
0 | ||||
1 | ||||
2 | ||||
r44726 | next verify copy metadata is lost when disabled | |||
------------------------------------------------ | ||||
|
r26013 | |||
$ hg strip -r . --config extensions.strip= | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/t/.hg/strip-backup/550bd84c0cd3-fc575957-backup.hg | ||
|
r26013 | $ hg up -qC 2 | ||
|
r34079 | $ hg rebase --keep -d 1 -b 2 --config extensions.rebase= --config experimental.copytrace=off --config ui.interactive=True << EOF | ||
|
r27596 | > c | ||
> EOF | ||||
|
r46356 | rebasing 2:add3f11052fa tip "other" | ||
|
r39321 | file 'a' was deleted in local [dest] but was modified in other [source]. | ||
|
r42765 | You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved. | ||
What do you want to do? c | ||||
|
r26013 | |||
$ cat b | ||||
1 | ||||
2 | ||||
|
r16913 | $ cd .. | ||
|
r26013 | |||
Verify disabling copy tracing still keeps copies from rebase source | ||||
r44726 | ------------------------------------------------------------------- | |||
|
r26013 | |||
$ hg init copydisable | ||||
$ cd copydisable | ||||
$ touch a | ||||
$ hg ci -Aqm 'add a' | ||||
$ touch b | ||||
$ hg ci -Aqm 'add b, c' | ||||
$ hg cp b x | ||||
$ echo x >> x | ||||
$ hg ci -qm 'copy b->x' | ||||
$ hg up -q 1 | ||||
$ touch z | ||||
$ hg ci -Aqm 'add z' | ||||
$ hg log -G -T '{rev} {desc}\n' | ||||
@ 3 add z | ||||
| | ||||
| o 2 copy b->x | ||||
|/ | ||||
o 1 add b, c | ||||
| | ||||
o 0 add a | ||||
|
r34079 | $ hg rebase -d . -b 2 --config extensions.rebase= --config experimental.copytrace=off | ||
|
r26013 | rebasing 2:6adcf8c12e7d "copy b->x" | ||
|
r35394 | saved backup bundle to $TESTTMP/copydisable/.hg/strip-backup/6adcf8c12e7d-ce4b3e75-rebase.hg | ||
|
r26013 | $ hg up -q 3 | ||
$ hg log -f x -T '{rev} {desc}\n' | ||||
3 copy b->x | ||||
1 add b, c | ||||
$ cd ../ | ||||
r44726 | ||||
test storage preservation | ||||
------------------------- | ||||
Verify rebase do not discard recorded copies data when copy tracing usage is | ||||
disabled. | ||||
Setup | ||||
|
r26013 | |||
$ hg init copydisable3 | ||||
$ cd copydisable3 | ||||
$ touch a | ||||
$ hg ci -Aqm 'add a' | ||||
$ hg cp a b | ||||
$ hg ci -Aqm 'copy a->b' | ||||
$ hg mv b c | ||||
$ hg ci -Aqm 'move b->c' | ||||
$ hg up -q 0 | ||||
$ hg cp a b | ||||
$ echo b >> b | ||||
$ hg ci -Aqm 'copy a->b (2)' | ||||
$ hg log -G -T '{rev} {desc}\n' | ||||
@ 3 copy a->b (2) | ||||
| | ||||
| o 2 move b->c | ||||
| | | ||||
| o 1 copy a->b | ||||
|/ | ||||
o 0 add a | ||||
r44726 | ||||
Actual Test | ||||
A file is copied on one side and has been moved twice on the other side. the | ||||
file is copied from `0:a`, so the file history of the `3:b` should trace directly to `0:a`. | ||||
|
r34079 | $ hg rebase -d 2 -s 3 --config extensions.rebase= --config experimental.copytrace=off | ||
|
r46356 | rebasing 3:47e1a9e6273b tip "copy a->b (2)" | ||
|
r35394 | saved backup bundle to $TESTTMP/copydisable3/.hg/strip-backup/47e1a9e6273b-2d099c59-rebase.hg | ||
|
r26013 | |||
$ hg log -G -f b | ||||
@ changeset: 3:76024fb4b05b | ||||
|
r28627 | : tag: tip | ||
: user: test | ||||
: date: Thu Jan 01 00:00:00 1970 +0000 | ||||
: summary: copy a->b (2) | ||||
: | ||||
|
r26013 | o changeset: 0:ac82d8b1f7c4 | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add a | ||||