Mercurial > hg
view hgext/interhg.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 | 0ac6b537893f |
children | 18091102a633 |
line wrap: on
line source
# interhg.py - interhg # # Copyright 2007 OHASHI Hideya <ohachige@gmail.com> # # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. # # The `interhg' Mercurial extension allows you to change changelog and # summary text just like InterWiki way. # # To enable this extension: # # [extensions] # interhg = # # This is an example to link to a bug tracking system. # # [interhg] # pat1 = s/issue(\d+)/ <a href="http:\/\/bts\/issue\1">issue\1<\/a> / # # You can add patterns to use pat2, pat3, ... # For exapmle. # # pat2 = s/(^|\s)#(\d+)\b/ <b>#\2<\/b> / import re from mercurial.hgweb import hgweb_mod from mercurial import templater orig_escape = templater.common_filters["escape"] interhg_table = [] def interhg_escape(x): escstr = orig_escape(x) for pat in interhg_table: regexp = pat[0] format = pat[1] escstr = regexp.sub(format, escstr) return escstr templater.common_filters["escape"] = interhg_escape orig_refresh = hgweb_mod.hgweb.refresh def interhg_refresh(self): interhg_table[:] = [] num = 1 while True: key = 'pat%d' % num pat = self.config('interhg', key) if pat == None: break pat = pat[2:-1] span = re.search(r'[^\\]/', pat).span() regexp = pat[:span[0] + 1] format = pat[span[1]:] format = re.sub(r'\\/', '/', format) regexp = re.compile(regexp) interhg_table.append((regexp, format)) num += 1 return orig_refresh(self) hgweb_mod.hgweb.refresh = interhg_refresh