##// END OF EJS Templates
transaction: use 'util.copyfile' for creating backup...
transaction: use 'util.copyfile' for creating backup Using 'copyfile' (single file) instead of 'copyfiles' (tree) will ensures destination file will be overwritten. This will prevent some abort if backup file are left in place for random reason. It also seems more correct.

File last commit:

r22707:38e0363d default
r23900:5eb3541f default
Show More
test-merge-types.t
379 lines | 9.7 KiB | text/troff | Tads3Lexer
/ tests / test-merge-types.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require symlink execbit
Mads Kiilerich
tests: use 'hghave symlink' for tests using symlinks
r15441
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout() {
> if [ -h $1 ]; then
> echo $1 is a symlink:
> $TESTDIR/readlink.py $1
> elif [ -x $1 ]; then
> echo $1 is an executable file with content:
> cat $1
> else
> echo $1 is a plain file with content:
> cat $1
> fi
> }
$ hg init test1
$ cd test1
Adrian Buehlmann
combine tests
r12279
$ echo a > a
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ hg ci -Aqmadd
Adrian Buehlmann
combine tests
r12279 $ chmod +x a
$ hg ci -mexecutable
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ hg up -q 0
Adrian Buehlmann
combine tests
r12279 $ rm a
$ ln -s symlink a
$ hg ci -msymlink
created new head
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 Symlink is local parent, executable is other:
Adrian Buehlmann
combine tests
r12279 $ hg merge --debug
searching for copies back to rev 1
resolving manifests
Siddharth Agarwal
manifestmerge: pass in branchmerge and force separately...
r18605 branchmerge: True, force: False, partial: False
Martin Geisler
merge: make debug output easier to read...
r15625 ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c
Mads Kiilerich
merge: change debug logging - test output changes but no real changes...
r21391 preserving a for resolve of a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 a: versions differ -> m
Adrian Buehlmann
combine tests
r12279 updating: a 1/1 files (100.00%)
Mads Kiilerich
merge: merge file flags together with file content...
r18338 picked tool 'internal:merge' for a (binary False symlink True)
merging a
my a@521a1e40188f+ other a@3574f3e69b1c ancestor a@c334dc3be0da
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Adrian Buehlmann
combine tests
r12279
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 a is a symlink:
a -> symlink
$ hg resolve a --tool internal:other
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
Mads Kiilerich
merge: merge file flags together with file content...
r18338 $ tellmeabout a
a is an executable file with content:
a
$ hg st
M a
? a.orig
Adrian Buehlmann
combine tests
r12279
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 Symlink is other parent, executable is local:
Adrian Buehlmann
combine tests
r12279
$ hg update -C 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge --debug
searching for copies back to rev 1
resolving manifests
Siddharth Agarwal
manifestmerge: pass in branchmerge and force separately...
r18605 branchmerge: True, force: False, partial: False
Martin Geisler
merge: make debug output easier to read...
r15625 ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
Mads Kiilerich
merge: change debug logging - test output changes but no real changes...
r21391 preserving a for resolve of a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 a: versions differ -> m
Adrian Buehlmann
combine tests
r12279 updating: a 1/1 files (100.00%)
Mads Kiilerich
merge: merge file flags together with file content...
r18338 picked tool 'internal:merge' for a (binary False symlink True)
merging a
my a@3574f3e69b1c+ other a@521a1e40188f ancestor a@c334dc3be0da
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Adrian Buehlmann
combine tests
r12279
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout a
Mads Kiilerich
merge: merge file flags together with file content...
r18338 a is an executable file with content:
a
Adrian Buehlmann
combine tests
r12279
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255 Update to link without local change should get us a symlink (issue3316):
Mads Kiilerich
tests: fix test markup in test-merge-types.t...
r17110 $ hg up -C 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg st
Mads Kiilerich
merge: merge file flags together with file content...
r18338 ? a.orig
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255
Update to link with local change should cause a merge prompt (issue3200):
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ hg up -Cq 0
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255 $ echo data > a
$ HGMERGE= hg up -y --debug
searching for copies back to rev 2
resolving manifests
Siddharth Agarwal
manifestmerge: pass in branchmerge and force separately...
r18605 branchmerge: False, force: False, partial: False
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255 ancestor: c334dc3be0da, local: c334dc3be0da+, remote: 521a1e40188f
Mads Kiilerich
merge: change debug logging - test output changes but no real changes...
r21391 preserving a for resolve of a
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255 a: versions differ -> m
updating: a 1/1 files (100.00%)
Thomas Arendsen Hein
test-merge-types: allow different output with existing hgmerge (issue3346)...
r16355 (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re)
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 picked tool ':prompt' for a (binary False symlink True)
Matt Mackall
merge: handle linear update to symlink correctly (issue3316)...
r16255 no tool found to merge a
keep (l)ocal or take (o)ther? l
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ hg diff --git
diff --git a/a b/a
old mode 120000
new mode 100644
--- a/a
+++ b/a
@@ -1,1 +1,1 @@
-symlink
\ No newline at end of file
+data
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 Test only 'l' change - happens rarely, except when recovering from situations
where that was what happened.
$ hg init test2
$ cd test2
$ printf base > f
$ hg ci -Aqm0
$ echo file > f
$ echo content >> f
$ hg ci -qm1
$ hg up -qr0
$ rm f
$ ln -s base f
$ hg ci -qm2
$ hg merge
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout f
f is a symlink:
Mads Kiilerich
merge: merge file flags together with file content...
r18338 f -> base
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337
$ hg up -Cqr1
$ hg merge
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout f
f is a plain file with content:
file
content
$ cd ..
Test removed 'x' flag merged with change to symlink
$ hg init test3
$ cd test3
$ echo f > f
$ chmod +x f
$ hg ci -Aqm0
$ chmod -x f
$ hg ci -qm1
$ hg up -qr0
$ rm f
$ ln -s dangling f
$ hg ci -qm2
$ hg merge
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout f
f is a symlink:
f -> dangling
$ hg up -Cqr1
$ hg merge
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
merge: merge file flags together with file content...
r18338 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout f
Mads Kiilerich
merge: merge file flags together with file content...
r18338 f is a plain file with content:
f
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337
Mads Kiilerich
merge: fix UnboundLocalError (issue3791)...
r18505 Test removed 'x' flag merged with content change - both ways
$ hg up -Cqr0
$ echo change > f
$ hg ci -qm3
$ hg merge -r1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ tellmeabout f
f is a plain file with content:
change
$ hg up -qCr1
$ hg merge -r3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ tellmeabout f
f is a plain file with content:
change
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ cd ..
Test merge with no common ancestor:
a: just different
b: x vs -, different (cannot calculate x, cannot ask merge tool)
c: x vs -, same (cannot calculate x, merge tool is no good)
d: x vs l, different
e: x vs l, same
f: - vs l, different
g: - vs l, same
h: l vs l, different
(where same means the filelog entry is shared and there thus is an ancestor!)
$ hg init test4
$ cd test4
$ echo 0 > 0
$ hg ci -Aqm0
$ echo 1 > a
$ echo 1 > b
$ chmod +x b
$ echo x > c
$ chmod +x c
$ echo 1 > d
$ chmod +x d
$ printf x > e
$ chmod +x e
$ echo 1 > f
$ printf x > g
$ ln -s 1 h
$ hg ci -qAm1
$ hg up -qr0
$ echo 2 > a
$ echo 2 > b
$ echo x > c
$ ln -s 2 d
$ ln -s x e
$ ln -s 2 f
$ ln -s x g
$ ln -s 2 h
$ hg ci -Aqm2
$ hg merge
merging a
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: merge file flags together with file content...
r18338 warning: cannot merge flags for b
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging b
warning: conflicts during merge.
merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: use ancestor filename from planning phase instead of filectx ancestor...
r20897 warning: cannot merge flags for c
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging d
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for d
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
merging h
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for h
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging h incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: merge file flags together with file content...
r18338 3 files updated, 0 files merged, 0 files removed, 5 files unresolved
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ hg resolve -l
U a
U b
U d
U f
U h
$ tellmeabout a
a is a plain file with content:
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< local: 0139c5610547 - test: 2
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 2
=======
1
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> other: 97e29675e796 - test: 1
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout b
Mads Kiilerich
merge: merge file flags together with file content...
r18338 b is a plain file with content:
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< local: 0139c5610547 - test: 2
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 2
=======
1
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> other: 97e29675e796 - test: 1
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout c
Mads Kiilerich
merge: merge file flags together with file content...
r18338 c is a plain file with content:
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 x
$ tellmeabout d
Mads Kiilerich
merge: merge file flags together with file content...
r18338 d is a symlink:
d -> 2
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout e
Mads Kiilerich
merge: merge file flags together with file content...
r18338 e is a symlink:
e -> x
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout f
f is a symlink:
f -> 2
$ tellmeabout g
g is a symlink:
g -> x
$ tellmeabout h
h is a symlink:
h -> 2
$ hg up -Cqr1
$ hg merge
merging a
warning: conflicts during merge.
merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: merge file flags together with file content...
r18338 warning: cannot merge flags for b
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging b
warning: conflicts during merge.
merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: use ancestor filename from planning phase instead of filectx ancestor...
r20897 warning: cannot merge flags for c
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging d
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for d
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging d incomplete! (edit conflicts, then use 'hg resolve --mark')
merging f
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for f
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
merging h
Mads Kiilerich
filemerge: switch the default name for internal tools from internal:x to :x
r22707 warning: internal :merge cannot merge symlinks for h
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 merging h incomplete! (edit conflicts, then use 'hg resolve --mark')
Mads Kiilerich
merge: merge file flags together with file content...
r18338 3 files updated, 0 files merged, 0 files removed, 5 files unresolved
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
[1]
$ tellmeabout a
a is a plain file with content:
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< local: 97e29675e796 - test: 1
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 1
=======
2
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> other: 0139c5610547 - test: 2
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout b
b is an executable file with content:
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 <<<<<<< local: 97e29675e796 - test: 1
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 1
=======
2
Pierre-Yves David
merge: drop the quotes around commit description...
r21693 >>>>>>> other: 0139c5610547 - test: 2
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ tellmeabout c
Mads Kiilerich
merge: use ancestor filename from planning phase instead of filectx ancestor...
r20897 c is an executable file with content:
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 x
$ tellmeabout d
Mads Kiilerich
merge: merge file flags together with file content...
r18338 d is an executable file with content:
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 1
$ tellmeabout e
Mads Kiilerich
merge: merge file flags together with file content...
r18338 e is an executable file with content:
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 x (no-eol)
$ tellmeabout f
f is a plain file with content:
1
$ tellmeabout g
g is a plain file with content:
x (no-eol)
$ tellmeabout h
h is a symlink:
h -> 1
$ cd ..