Index: lib/redmine/scm/adapters/mercurial/redminehelper.py
===================================================================
--- lib/redmine/scm/adapters/mercurial/redminehelper.py (revision 17347)
+++ lib/redmine/scm/adapters/mercurial/redminehelper.py (working copy)
@@ -54,6 +54,12 @@
_x = cgi.escape
_u = lambda s: cgi.escape(urllib.quote(s))
+def _changectx(repo, rev):
+ if hasattr(repo, 'changectx'):
+ return repo.changectx(rev)
+ else:
+ return repo[rev]
+
def _tip(ui, repo):
# see mercurial/commands.py:tip
def tiprev():
@@ -61,7 +67,7 @@
return len(repo) - 1
except TypeError: # Mercurial < 1.1
return repo.changelog.count() - 1
- tipctx = repo.changectx(tiprev())
+ tipctx = _changectx(repo, tiprev())
ui.write('\n'
% (tipctx.rev(), _x(node.hex(tipctx.node()))))
@@ -94,13 +100,18 @@
return repo.branchheads(branch, closed=False)
except TypeError: # Mercurial < 1.2
return repo.branchheads(branch)
+ def lookup(rev, n):
+ try:
+ return repo.lookup(rev)
+ except RuntimeError:
+ return n
for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True):
- if repo.lookup(r) in branchheads(t):
+ if lookup(r, n) in branchheads(t):
ui.write('\n'
% (r, _x(node.hex(n)), _x(t)))
def _manifest(ui, repo, path, rev):
- ctx = repo.changectx(rev)
+ ctx = _changectx(repo, rev)
ui.write('\n'
% (ctx.rev(), _u(path)))
@@ -155,7 +166,7 @@
"""diff repository (or selected files)"""
change = opts.pop('change', None)
if change: # add -c option for Mercurial<1.1
- base = repo.changectx(change).parents()[0].rev()
+ base = _changectx(repo, change).parents()[0].rev()
opts['rev'] = [str(base), change]
opts['nodates'] = True
return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts)