Mercurial > hg-stable
view hgext/win32text.py @ 5200:c7e8fe11f34a
path_auditor: cache names of audited directories
We use a separate cache to avoid problems with
audit = path_auditor(repo.root)
audit("subrepo")
audit("subrepo/file")
whitelisting "subrepo" (which is fine) and then using the same whitelist
with "subrepo/file" (which is not fine).
Since we create a separate path_auditor for every path on the command line,
a "hg add dir/a dir/b dir/c" will still lstat dir 3 times just to audit
the paths.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 18 Aug 2007 21:36:10 -0300 |
parents | 8c5aca855b5d |
children | a5fe27b83a4a |
line wrap: on
line source
from mercurial import util, ui from mercurial.i18n import gettext as _ import re # regexp for single LF without CR preceding. re_single_lf = re.compile('(^|[^\r])\n', re.MULTILINE) def dumbdecode(s, cmd): # warn if already has CRLF in repository. # it might cause unexpected eol conversion. # see issue 302: # http://www.selenic.com/mercurial/bts/issue302 if '\r\n' in s: u = ui.ui() u.warn(_('WARNING: file in repository already has CRLF line ending \n' ' which does not need eol conversion by win32text plugin.\n' ' Please reconsider encode/decode setting in' ' mercurial.ini or .hg/hgrc\n' ' before next commit.\n')) # replace single LF to CRLF return re_single_lf.sub('\\1\r\n', s) def dumbencode(s, cmd): return s.replace('\r\n', '\n') def clevertest(s, cmd): if '\0' in s: return False return True def cleverdecode(s, cmd): if clevertest(s, cmd): return dumbdecode(s, cmd) return s def cleverencode(s, cmd): if clevertest(s, cmd): return dumbencode(s, cmd) return s util.filtertable.update({ 'dumbdecode:': dumbdecode, 'dumbencode:': dumbencode, 'cleverdecode:': cleverdecode, 'cleverencode:': cleverencode, })