test-rename-dir-merge.t
295 lines
| 6.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rename-dir-merge.t
Martin Geisler
|
r13956 | $ hg init t | ||
Nicolas Dumazet
|
r12114 | $ cd t | ||
$ mkdir a | ||||
$ echo foo > a/a | ||||
$ echo bar > a/b | ||||
$ hg ci -Am "0" | ||||
adding a/a | ||||
adding a/b | ||||
$ hg co -C 0 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg mv a b | ||||
Matt Harbison
|
r35394 | moving a/a to b/a | ||
moving a/b to b/b | ||||
Nicolas Dumazet
|
r12114 | $ hg ci -m "1 mv a/ b/" | ||
$ hg co -C 0 | ||||
2 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ echo baz > a/c | ||||
$ echo quux > a/d | ||||
$ hg add a/c | ||||
$ hg ci -m "2 add a/c" | ||||
created new head | ||||
$ hg merge --debug 1 | ||||
searching for copies back to rev 1 | ||||
unmatched files in local: | ||||
a/c | ||||
unmatched files in other: | ||||
b/a | ||||
b/b | ||||
Thomas Arendsen Hein
|
r16795 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
Siddharth Agarwal
|
r18135 | src: 'a/a' -> dst: 'b/a' | ||
src: 'a/b' -> dst: 'b/b' | ||||
Nicolas Dumazet
|
r12114 | checking for directory renames | ||
Siddharth Agarwal
|
r18135 | discovered dir src: 'a/' -> dst: 'b/' | ||
pending file src: 'a/c' -> dst: 'b/c' | ||||
Nicolas Dumazet
|
r12114 | resolving manifests | ||
Siddharth Agarwal
|
r18605 | branchmerge: True, force: False, partial: False | ||
Martin Geisler
|
r15625 | ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 | ||
Mads Kiilerich
|
r18360 | a/a: other deleted -> r | ||
Mads Kiilerich
|
r21391 | removing a/a | ||
Nicolas Dumazet
|
r12114 | a/b: other deleted -> r | ||
removing a/b | ||||
Mads Kiilerich
|
r21391 | b/a: remote created -> g | ||
Bryan O'Sullivan
|
r18631 | getting b/a | ||
Mads Kiilerich
|
r21391 | b/b: remote created -> g | ||
Bryan O'Sullivan
|
r18631 | getting b/b | ||
Mads Kiilerich
|
r21391 | b/c: remote directory rename - move from a/c -> dm | ||
Matt Harbison
|
r35394 | moving a/c to b/c | ||
Matt Mackall
|
r16094 | 3 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||
Nicolas Dumazet
|
r12114 | (branch merge, don't forget to commit) | ||
$ echo a/* b/* | ||||
Matt Mackall
|
r16094 | a/d b/a b/b b/c | ||
Nicolas Dumazet
|
r12114 | $ hg st -C | ||
M b/a | ||||
M b/b | ||||
A b/c | ||||
a/c | ||||
R a/a | ||||
R a/b | ||||
R a/c | ||||
Matt Mackall
|
r16094 | ? a/d | ||
Nicolas Dumazet
|
r12114 | $ hg ci -m "3 merge 2+1" | ||
$ hg debugrename b/c | ||||
Matt Harbison
|
r35394 | b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 | ||
Nicolas Dumazet
|
r12114 | |||
$ hg co -C 1 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg merge --debug 2 | ||||
searching for copies back to rev 1 | ||||
unmatched files in local: | ||||
b/a | ||||
b/b | ||||
unmatched files in other: | ||||
a/c | ||||
Thomas Arendsen Hein
|
r16795 | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||
Siddharth Agarwal
|
r18135 | src: 'a/a' -> dst: 'b/a' | ||
src: 'a/b' -> dst: 'b/b' | ||||
Nicolas Dumazet
|
r12114 | checking for directory renames | ||
Siddharth Agarwal
|
r18135 | discovered dir src: 'a/' -> dst: 'b/' | ||
pending file src: 'a/c' -> dst: 'b/c' | ||||
Nicolas Dumazet
|
r12114 | resolving manifests | ||
Siddharth Agarwal
|
r18605 | branchmerge: True, force: False, partial: False | ||
Martin Geisler
|
r15625 | ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb | ||
Matt Harbison
|
r28318 | starting 4 threads for background file closing (?) | ||
Mads Kiilerich
|
r20944 | b/c: local directory rename - get from a/c -> dg | ||
Nicolas Dumazet
|
r12114 | getting a/c to b/c | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ echo a/* b/* | ||||
Matt Mackall
|
r16094 | a/d b/a b/b b/c | ||
Nicolas Dumazet
|
r12114 | $ hg st -C | ||
A b/c | ||||
a/c | ||||
Matt Mackall
|
r16094 | ? a/d | ||
Nicolas Dumazet
|
r12114 | $ hg ci -m "4 merge 1+2" | ||
created new head | ||||
$ hg debugrename b/c | ||||
Matt Harbison
|
r35394 | b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 | ||
Nicolas Dumazet
|
r12114 | |||
Martin von Zweigbergk
|
r23444 | Local directory rename with conflicting file added in remote source directory | ||
and untracked in local target directory. | ||||
$ hg co -qC 1 | ||||
Martin von Zweigbergk
|
r23464 | $ echo target > b/c | ||
Martin von Zweigbergk
|
r23444 | $ hg merge 2 | ||
Martin von Zweigbergk
|
r23653 | b/c: untracked file differs | ||
abort: untracked files in working directory differ from files in requested revision | ||||
[255] | ||||
$ cat b/c | ||||
target | ||||
but it should succeed if the content matches | ||||
$ hg cat -r 2 a/c > b/c | ||||
$ hg merge 2 | ||||
Martin von Zweigbergk
|
r23444 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
(branch merge, don't forget to commit) | ||||
Martin von Zweigbergk
|
r23653 | $ hg st -C | ||
Martin von Zweigbergk
|
r23444 | A b/c | ||
a/c | ||||
? a/d | ||||
Local directory rename with conflicting file added in remote source directory | ||||
and committed in local target directory. | ||||
$ hg co -qC 1 | ||||
Martin von Zweigbergk
|
r23464 | $ echo target > b/c | ||
Martin von Zweigbergk
|
r23444 | $ hg add b/c | ||
$ hg commit -qm 'new file in target directory' | ||||
$ hg merge 2 | ||||
Martin von Zweigbergk
|
r23476 | merging b/c and a/c to b/c | ||
Siddharth Agarwal
|
r26614 | warning: conflicts while merging b/c! (edit, then use 'hg resolve --mark') | ||
Martin von Zweigbergk
|
r23476 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||
Pulkit Goyal
|
r35722 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | ||
Martin von Zweigbergk
|
r23476 | [1] | ||
Martin von Zweigbergk
|
r23464 | $ hg st -A | ||
Martin von Zweigbergk
|
r23476 | M b/c | ||
Martin von Zweigbergk
|
r23444 | a/c | ||
? a/d | ||||
Martin von Zweigbergk
|
r23476 | ? b/c.orig | ||
Martin von Zweigbergk
|
r23464 | C b/a | ||
C b/b | ||||
$ cat b/c | ||||
Simon Farnsworth
|
r30062 | <<<<<<< working copy: f1c50ca4f127 - test: new file in target directory | ||
Martin von Zweigbergk
|
r23476 | target | ||
======= | ||||
Martin von Zweigbergk
|
r23464 | baz | ||
Kostia Balytskyi
|
r30460 | >>>>>>> merge rev: ce36d17b18fb - test: 2 add a/c | ||
Martin von Zweigbergk
|
r23476 | $ rm b/c.orig | ||
Martin von Zweigbergk
|
r23464 | |||
Remote directory rename with conflicting file added in remote target directory | ||||
and committed in local source directory. | ||||
$ hg co -qC 2 | ||||
$ hg st -A | ||||
? a/d | ||||
C a/a | ||||
C a/b | ||||
C a/c | ||||
$ hg merge 5 | ||||
Martin von Zweigbergk
|
r23475 | merging a/c and b/c to b/c | ||
Siddharth Agarwal
|
r26614 | warning: conflicts while merging b/c! (edit, then use 'hg resolve --mark') | ||
Martin von Zweigbergk
|
r23475 | 2 files updated, 0 files merged, 2 files removed, 1 files unresolved | ||
Pulkit Goyal
|
r35722 | use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon | ||
Martin von Zweigbergk
|
r23475 | [1] | ||
Martin von Zweigbergk
|
r23464 | $ hg st -A | ||
M b/a | ||||
M b/b | ||||
Martin von Zweigbergk
|
r23475 | M b/c | ||
Martin von Zweigbergk
|
r23464 | a/c | ||
R a/a | ||||
R a/b | ||||
R a/c | ||||
? a/d | ||||
Martin von Zweigbergk
|
r23475 | ? b/c.orig | ||
Martin von Zweigbergk
|
r23444 | $ cat b/c | ||
Kostia Balytskyi
|
r30460 | <<<<<<< working copy: ce36d17b18fb - test: 2 add a/c | ||
Martin von Zweigbergk
|
r23444 | baz | ||
Martin von Zweigbergk
|
r23475 | ======= | ||
target | ||||
Simon Farnsworth
|
r30062 | >>>>>>> merge rev: f1c50ca4f127 - test: new file in target directory | ||
Nicolas Dumazet
|
r12114 | |||
Second scenario with two repos: | ||||
$ cd .. | ||||
Martin Geisler
|
r13956 | $ hg init r1 | ||
Nicolas Dumazet
|
r12114 | $ cd r1 | ||
$ mkdir a | ||||
$ echo foo > a/f | ||||
$ hg add a | ||||
Matt Harbison
|
r35394 | adding a/f | ||
Nicolas Dumazet
|
r12114 | $ hg ci -m "a/f == foo" | ||
$ cd .. | ||||
$ hg clone r1 r2 | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd r2 | ||||
$ hg mv a b | ||||
Matt Harbison
|
r35394 | moving a/f to b/f | ||
Nicolas Dumazet
|
r12114 | $ echo foo1 > b/f | ||
$ hg ci -m" a -> b, b/f == foo1" | ||||
$ cd .. | ||||
$ cd r1 | ||||
$ mkdir a/aa | ||||
$ echo bar > a/aa/g | ||||
$ hg add a/aa | ||||
Matt Harbison
|
r35394 | adding a/aa/g | ||
Nicolas Dumazet
|
r12114 | $ hg ci -m "a/aa/g" | ||
$ hg pull ../r2 | ||||
pulling from ../r2 | ||||
searching for changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 7d51ed18da25 | ||
Nicolas Dumazet
|
r12114 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg merge | ||||
2 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg st -C | ||||
M b/f | ||||
A b/aa/g | ||||
a/aa/g | ||||
R a/aa/g | ||||
R a/f | ||||
Mads Kiilerich
|
r16913 | |||
$ cd .. | ||||
Matt Mackall
|
r27876 | |||
Test renames to separate directories | ||||
$ hg init a | ||||
$ cd a | ||||
$ mkdir a | ||||
$ touch a/s | ||||
$ touch a/t | ||||
$ hg ci -Am0 | ||||
adding a/s | ||||
adding a/t | ||||
Add more files | ||||
$ touch a/s2 | ||||
$ touch a/t2 | ||||
$ hg ci -Am1 | ||||
adding a/s2 | ||||
adding a/t2 | ||||
Do moves on a branch | ||||
$ hg up 0 | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ mkdir s | ||||
$ mkdir t | ||||
$ hg mv a/s s | ||||
$ hg mv a/t t | ||||
$ hg ci -Am2 | ||||
created new head | ||||
$ hg st --copies --change . | ||||
A s/s | ||||
a/s | ||||
A t/t | ||||
a/t | ||||
R a/s | ||||
R a/t | ||||
Merge shouldn't move s2, t2 | ||||
$ hg merge | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg st --copies | ||||
M a/s2 | ||||
M a/t2 | ||||
Try the merge in the other direction. It may or may not be appropriate for | ||||
status to list copies here. | ||||
$ hg up -C 1 | ||||
4 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg merge | ||||
2 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg st --copies | ||||
M s/s | ||||
M t/t | ||||
R a/s | ||||
R a/t | ||||