diff mercurial/cmdutil.py @ 14068:04ce8fa1015d

add: notify when adding a file that would cause a case-folding collision On a case-sensitive file system, files can be added with names that differ only in case (a "case collision"). This would cause an error on case-insensitive filesystems. A warning or error is now given for such collisions, depending on the value of ui.portablefilenames ('warn', 'abort', or 'ignore'): $ touch file File $ hg add --config ui.portablefilenames=abort File abort: possible case-folding collision for File $ hg add File warning: possible case-folding collision for File
author Kevin Gessner <kevin@kevingessner.com>
date Sat, 30 Apr 2011 12:39:46 +0200
parents e4bfb9c337f3
children 9f5a0acb0056
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sat Apr 30 11:08:24 2011 +0200
+++ b/mercurial/cmdutil.py	Sat Apr 30 12:39:46 2011 +0200
@@ -1314,9 +1314,16 @@
     match.bad = lambda x, y: bad.append(x) or oldbad(x, y)
     names = []
     wctx = repo[None]
+    wctx.status(clean=True)
+    existing = None
+    if scmutil.showportabilityalert(ui):
+        existing = dict([(fn.lower(), fn) for fn in
+                         wctx.added() + wctx.clean() + wctx.modified()])
     for f in repo.walk(match):
         exact = match.exact(f)
         if exact or f not in repo.dirstate:
+            if existing:
+                scmutil.checkcasecollision(ui, f, existing)
             names.append(f)
             if ui.verbose or not exact:
                 ui.status(_('adding %s\n') % match.rel(join(f)))