comparison mercurial/scmutil.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 e88a4958a6b7
children d3f7e110c3c0
comparison
equal deleted inserted replaced
14067:e88a4958a6b7 14068:04ce8fa1015d
19 checkfilename(f) 19 checkfilename(f)
20 if showportabilityalert(ui): 20 if showportabilityalert(ui):
21 msg = util.checkwinfilename(f) 21 msg = util.checkwinfilename(f)
22 if msg: 22 if msg:
23 portabilityalert(ui, "%s: %r" % (msg, f)) 23 portabilityalert(ui, "%s: %r" % (msg, f))
24
25 def checkcasecollision(ui, f, files):
26 if f.lower() in files and files[f.lower()] != f:
27 portabilityalert(ui, _('possible case-folding collision for %s') % f)
28 files[f.lower()] = f
24 29
25 def checkportabilityalert(ui): 30 def checkportabilityalert(ui):
26 '''check if the user's config requests nothing, a warning, or abort for 31 '''check if the user's config requests nothing, a warning, or abort for
27 non-portable filenames''' 32 non-portable filenames'''
28 val = ui.config('ui', 'portablefilenames', 'warn') 33 val = ui.config('ui', 'portablefilenames', 'warn')