mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
a6dc53e738
The current output for a failed merge with conflict markers looks something like: merging foo warning: conflicts during merge. merging foo incomplete! (edit conflicts, then use 'hg resolve --mark') merging bar warning: conflicts during merge. merging bar incomplete! (edit conflicts, then use 'hg resolve --mark') We're going to change the way merges are done to perform all premerges before all merges, so that the output above would look like: merging foo merging bar warning: conflicts during merge. merging foo incomplete! (edit conflicts, then use 'hg resolve --mark') warning: conflicts during merge. merging bar incomplete! (edit conflicts, then use 'hg resolve --mark') The 'warning: conflicts during merge' line has no context, so is pretty confusing. This patch will change the future output to: merging foo merging bar warning: conflicts while merging foo! (edit, then use 'hg resolve --mark') warning: conflicts while merging bar! (edit, then use 'hg resolve --mark') The hint on how to resolve the conflicts makes this a bit unwieldy, but solving that is tricky because we already hint that people run 'hg resolve' to retry unresolved merges. The 'hg resolve --mark' mostly applies to conflict marker based resolution.
95 lines
1.7 KiB
Perl
95 lines
1.7 KiB
Perl
test that we don't interrupt the merge session if
|
|
a file-level merge failed
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
$ echo foo > foo
|
|
$ echo a > bar
|
|
$ hg ci -Am 'add foo'
|
|
adding bar
|
|
adding foo
|
|
|
|
$ hg mv foo baz
|
|
$ echo b >> bar
|
|
$ echo quux > quux1
|
|
$ hg ci -Am 'mv foo baz'
|
|
adding quux1
|
|
|
|
$ hg up -qC 0
|
|
$ echo >> foo
|
|
$ echo c >> bar
|
|
$ echo quux > quux2
|
|
$ hg ci -Am 'change foo'
|
|
adding quux2
|
|
created new head
|
|
|
|
test with the rename on the remote side
|
|
$ HGMERGE=false hg merge
|
|
merging bar
|
|
merging bar failed!
|
|
merging foo and baz to baz
|
|
1 files updated, 1 files merged, 0 files removed, 1 files unresolved
|
|
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
|
|
[1]
|
|
$ hg resolve -l
|
|
U bar
|
|
R baz
|
|
|
|
test with the rename on the local side
|
|
$ hg up -C 1
|
|
3 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ HGMERGE=false hg merge
|
|
merging bar
|
|
merging bar failed!
|
|
merging baz and foo to baz
|
|
1 files updated, 1 files merged, 0 files removed, 1 files unresolved
|
|
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
|
|
[1]
|
|
|
|
show unresolved
|
|
$ hg resolve -l
|
|
U bar
|
|
R baz
|
|
|
|
unmark baz
|
|
$ hg resolve -u baz
|
|
|
|
show
|
|
$ hg resolve -l
|
|
U bar
|
|
U baz
|
|
$ hg st
|
|
M bar
|
|
M baz
|
|
M quux2
|
|
? bar.orig
|
|
|
|
re-resolve baz
|
|
$ hg resolve baz
|
|
merging baz and foo to baz
|
|
|
|
after resolve
|
|
$ hg resolve -l
|
|
U bar
|
|
R baz
|
|
|
|
resolve all warning
|
|
$ hg resolve
|
|
abort: no files or directories specified
|
|
(use --all to re-merge all unresolved files)
|
|
[255]
|
|
|
|
resolve all
|
|
$ hg resolve -a
|
|
merging bar
|
|
warning: conflicts while merging bar! (edit, then use 'hg resolve --mark')
|
|
[1]
|
|
|
|
after
|
|
$ hg resolve -l
|
|
U bar
|
|
R baz
|
|
|
|
$ cd ..
|