changeset 15894:44fa047cef57

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
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Wed, 11 Jan 2012 15:53:42 -0500
parents eb6867b98223
children 933b9ff73750
files mercurial/merge.py tests/test-casefolding.t tests/test-merge1.t
diffstat 3 files changed, 11 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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