Mercurial > public > mercurial-scm > hg-stable
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)))