merge: report all files in _checkunknown
When doing hg up, if there is a file conflict with untracked files,
currently only the first such conflict is reported. With this patch,
all of them are listed.
With this patch error message is now reported as
a: untracked file differs
b: untracked file differs
abort: untracked files in working directory conflict with files in
requested revision
instead of
abort: untracked file in working directory differs from file in
requested revision: 'a'
This is a follow up to an old attempt to do this here:
http://selenic.com/pipermail/mercurial-devel/2011-August/033625.html
--- a/mercurial/merge.py Fri Jan 13 22:16:01 2012 +0100
+++ b/mercurial/merge.py Wed Jan 11 15:53:42 2012 -0500
@@ -90,11 +90,16 @@
folded = {}
for fn in mctx:
folded[foldf(fn)] = fn
+
+ error = False
for fn in wctx.unknown():
f = foldf(fn)
if f in folded and mctx[folded[f]].cmp(wctx[f]):
- raise util.Abort(_("untracked file in working directory differs"
- " from file in requested revision: '%s'") % fn)
+ error = True
+ wctx._repo.ui.warn(_("%s: untracked file differs\n") % fn)
+ if error:
+ raise util.Abort(_("untracked files in working directory differ "
+ "from files in requested revision"))
def _checkcollision(mctx, wctx):
"check for case folding collisions in the destination context"
--- a/tests/test-casefolding.t Fri Jan 13 22:16:01 2012 +0100
+++ b/tests/test-casefolding.t Wed Jan 11 15:53:42 2012 -0500
@@ -66,7 +66,8 @@
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo gold > a
$ hg up
- abort: untracked file in working directory differs from file in requested revision: 'a'
+ a: untracked file differs
+ abort: untracked files in working directory differ from files in requested revision
[255]
$ cat a
gold
--- a/tests/test-merge1.t Fri Jan 13 22:16:01 2012 +0100
+++ b/tests/test-merge1.t Wed Jan 11 15:53:42 2012 -0500
@@ -66,7 +66,8 @@
$ echo This is file b2 > b
merge should fail
$ hg merge 1
- abort: untracked file in working directory differs from file in requested revision: 'b'
+ b: untracked file differs
+ abort: untracked files in working directory differ from files in requested revision
[255]
merge of b expected
$ hg merge -f 1