|
1 from mercurial import hg, filelog, revlog, context, util |
|
2 import re |
|
3 |
|
4 def reposetup(ui, repo): |
|
5 if not repo.local(): |
|
6 return |
|
7 |
|
8 class kwrepo(repo.__class__): |
|
9 def file(self, f): |
|
10 if f[0] == '/': |
|
11 f = f[1:] |
|
12 return filelog.filelog(self.sopener, f, self, self.revlogversion) |
|
13 |
|
14 class kwfilelog(filelog.filelog): |
|
15 def __init__(self, opener, path, repo, |
|
16 defversion=revlog.REVLOG_DEFAULT_VERSION): |
|
17 super(kwfilelog, self).__init__(opener, path, defversion) |
|
18 self._repo = repo |
|
19 self._path = path |
|
20 def read(self, node): |
|
21 data = super(kwfilelog, self).read(node) |
|
22 if (not util.binary(data) and |
|
23 self._repo.ui.config("keywords", "expand", True)): |
|
24 c = context.filectx(self._repo, self._path, fileid=node, |
|
25 filelog=self) |
|
26 def author(): return "$Author %s $" % c.user() |
|
27 def date(): return "$Date %s $" % util.datestr(c.date()) |
|
28 |
|
29 data = re.sub(r'\$Author\$', author(), data) |
|
30 data = re.sub(r'\$Date\$', date(), data) |
|
31 return data |
|
32 def add(self, text, meta, tr, link, p1=None, p2=None): |
|
33 if (not util.binary(text) and |
|
34 self._repo.ui.config("keywords", "remove", True)): |
|
35 text = re.sub(r'\$Author[^\$]*\$', '$Author$', text) |
|
36 text = re.sub(r'\$Date[^\$]*\$', '$Date$', text) |
|
37 return super(kwfilelog, self).add(text, meta, tr, link, p1, p2) |
|
38 |
|
39 filelog.filelog = kwfilelog |
|
40 repo.__class__ = kwrepo |