1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
From: Neil Muller <drnlmuller+debian@gmail.com>
Date: Mon, 8 Feb 2021 17:05:21 +0200
Subject: Update HgExtractor to work with mercurial using python 3
From upstream commit: 6e9372a2e297b0925d951d178ce39840d99277c6
Forwarded: not-needed
---
irkerhook.py | 45 +++++++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/irkerhook.py b/irkerhook.py
index bf697ab..e6b8f04 100755
--- a/irkerhook.py
+++ b/irkerhook.py
@@ -369,6 +369,7 @@ class HgExtractor(GenericExtractor):
def is_repository(directory):
return has(directory, [".hg"])
def __init__(self, arguments):
+ from mercurial.encoding import unifromlocal
# This fiddling with arguments is necessary since the Mercurial hook can
# be run in two different ways: either directly via Python (in which
# case hg should be pointed to the hg_hook function below) or as a
@@ -395,24 +396,27 @@ class HgExtractor(GenericExtractor):
GenericExtractor.__init__(self, arguments)
# Extract global values from the hg configuration file(s)
- self.project = ui.config('irker', 'project')
- self.repo = ui.config('irker', 'repo')
- self.server = ui.config('irker', 'server')
- self.channels = ui.config('irker', 'channels')
- self.email = ui.config('irker', 'email')
- self.tcp = str(ui.configbool('irker', 'tcp')) # converted to bool again in do_overrides
- self.template = ui.config('irker', 'template') or '%(bold)s%(project)s:%(reset)s %(green)s%(author)s%(reset)s %(repo)s:%(yellow)s%(branch)s%(reset)s * %(bold)s%(rev)s%(reset)s / %(bold)s%(files)s%(reset)s: %(logmsg)s %(brown)s%(url)s%(reset)s'
- self.tinyifier = ui.config('irker', 'tinyifier') or default_tinyifier
- self.color = ui.config('irker', 'color')
- self.urlprefix = (ui.config('irker', 'urlprefix') or
- ui.config('web', 'baseurl') or '')
+ self.project = unifromlocal(ui.config(b'irker', b'project') or b'')
+ self.repo = unifromlocal(ui.config(b'irker', b'repo') or b'')
+ self.server = unifromlocal(ui.config(b'irker', b'server') or b'')
+ self.channels = unifromlocal(ui.config(b'irker', b'channels') or b'')
+ self.email = unifromlocal(ui.config(b'irker', b'email') or b'')
+ self.tcp = str(ui.configbool(b'irker', b'tcp')) # converted to bool again in do_overrides
+ self.template = unifromlocal(ui.config(b'irker', b'template') or b'')
+ if not self.template:
+ self.template = '%(bold)s%(project)s:%(reset)s %(green)s%(author)s%(reset)s %(repo)s:%(yellow)s%(branch)s%(reset)s * %(bold)s%(rev)s%(reset)s / %(bold)s%(files)s%(reset)s: %(logmsg)s %(brown)s%(url)s%(reset)s'
+ self.tinyifier = unifromlocal(ui.config(b'irker', b'tinyifier')
+ or default_tinyifier.encode('utf-8'))
+ self.color = unifromlocal(ui.config(b'irker', b'color') or b'')
+ self.urlprefix = unifromlocal((ui.config(b'irker', b'urlprefix') or
+ ui.config(b'web', b'baseurl') or b''))
if self.urlprefix:
# self.commit is appended to this by do_overrides
self.urlprefix = self.urlprefix.rstrip('/') + '/rev/'
- self.cialike = ui.config('irker', 'cialike')
- self.filtercmd = ui.config('irker', 'filtercmd')
+ self.cialike = unifromlocal(ui.config(b'irker', b'cialike') or b'')
+ self.filtercmd = unifromlocal(ui.config(b'irker', b'filtercmd') or b'')
if not self.project:
- self.project = os.path.basename(self.repository.root.rstrip('/'))
+ self.project = os.path.basename(unifromlocal(self.repository.root).rstrip('/'))
self.do_overrides()
def head(self):
"Return a symbolic reference to the tip commit of the current branch."
@@ -421,19 +425,20 @@ class HgExtractor(GenericExtractor):
"Make a Commit object holding data for a specified commit ID."
from mercurial.node import short
from mercurial.templatefilters import person
- node = self.repository.lookup(commit_id)
- commit = Commit(self, short(node))
+ from mercurial.encoding import unifromlocal
+ ctx = self.repository[commit_id]
+ commit = Commit(self, unifromlocal(short(ctx.hex())))
# Extract commit-specific values from a "context" object
ctx = self.repository.changectx(node)
commit.rev = '%d:%s' % (ctx.rev(), commit.commit)
- commit.branch = ctx.branch()
- commit.author = person(ctx.user())
+ commit.branch = unifromlocal(ctx.branch())
+ commit.author = unifromlocal(person(ctx.user()))
commit.author_date = \
datetime.datetime.fromtimestamp(ctx.date()[0]).strftime('%Y-%m-%d %H:%M:%S')
- commit.logmsg = ctx.description()
+ commit.logmsg = unifromlocal(ctx.description())
# Extract changed files from status against first parent
st = self.repository.status(ctx.p1().node(), ctx.node())
- commit.files = ' '.join(st.modified + st.added + st.removed)
+ commit.files = unifromlocal(b' '.join(st.modified + st.added + st.removed))
return commit
def hg_hook(ui, repo, **kwds):
|