author | Christian Ebert <blacktrash@gmx.net> |
Tue, 19 Dec 2006 15:41:45 +0100 | |
branch | extension |
changeset 36 | b3ace8cc5a33 |
parent 34 | 3a79665dcbc3 |
child 41 | e1c539e1282b |
permissions | -rw-r--r-- |
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
1 |
from mercurial import hg, filelog, revlog, context, util |
34
3a79665dcbc3
Make keyword do my hgkeyword; use basename again
Christian Ebert <blacktrash@gmx.net>
parents:
33
diff
changeset
|
2 |
import os.path, re |
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
3 |
|
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
4 |
def reposetup(ui, repo): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
5 |
if not repo.local(): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
6 |
return |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
7 |
|
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
8 |
class kwrepo(repo.__class__): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
9 |
def file(self, f): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
10 |
if f[0] == '/': |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
11 |
f = f[1:] |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
12 |
return filelog.filelog(self.sopener, f, self, self.revlogversion) |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
13 |
|
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
14 |
class kwfilelog(filelog.filelog): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
15 |
def __init__(self, opener, path, repo, |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
16 |
defversion=revlog.REVLOG_DEFAULT_VERSION): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
17 |
super(kwfilelog, self).__init__(opener, path, defversion) |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
18 |
self._repo = repo |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
19 |
self._path = path |
36
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
20 |
|
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
21 |
def read(self, node): |
36
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
22 |
def gethgkw(): |
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
23 |
c = context.filectx(self._repo, self._path, fileid=node, |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
24 |
filelog=self) |
36
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
25 |
filename = c.path() |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
26 |
for pat, opt in self._repo.ui.configitems('keyword'): |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
27 |
if opt == 'expand': |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
28 |
mf = util.matcher(self._repo.root, |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
29 |
'', [pat], [], [])[1] |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
30 |
if mf(filename): |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
31 |
return '$Hg: %s,v %s %s %s $' % ( |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
32 |
os.path.basename(filename), |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
33 |
c.changectx(), |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
34 |
util.datestr(date=c.date(), |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
35 |
format=util.defaultdateformats[0]), |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
36 |
util.shortuser(c.user()) |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
37 |
) |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
38 |
data = super(kwfilelog, self).read(node) |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
39 |
if not util.binary(data): |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
40 |
hgkw = gethgkw() |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
41 |
if hgkw: |
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
42 |
data = data.replace('$Hg$', hgkw) |
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
43 |
return data |
36
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
44 |
|
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
45 |
def add(self, text, meta, tr, link, p1=None, p2=None): |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
46 |
if (not util.binary(text) and |
36
b3ace8cc5a33
Change config opt "expand" to accept filename patterns
Christian Ebert <blacktrash@gmx.net>
parents:
34
diff
changeset
|
47 |
self._repo.ui.config('keyword', 'remove', True)): |
34
3a79665dcbc3
Make keyword do my hgkeyword; use basename again
Christian Ebert <blacktrash@gmx.net>
parents:
33
diff
changeset
|
48 |
text = re.sub(r'\$Hg[^$]*?\$', '$Hg$', text) |
33
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
49 |
return super(kwfilelog, self).add(text, meta, tr, link, p1, p2) |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
50 |
|
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
51 |
filelog.filelog = kwfilelog |
ebb39c6a1476
Add original keyword extension by Thomas Arendsen Hain
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
52 |
repo.__class__ = kwrepo |