diff options
author | Go MAEDA <maeda@farend.jp> | 2018-05-28 09:40:15 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2018-05-28 09:40:15 +0000 |
commit | eafe8a9f9e93d5d84b02a9f90acf9bf58b9f288a (patch) | |
tree | e22879a70a1c3734f7dd37ebeaac67aa183215f8 /lib | |
parent | e32409814ed7e45885628e682b42107b7761d123 (diff) | |
download | redmine-eafe8a9f9e93d5d84b02a9f90acf9bf58b9f288a.tar.gz redmine-eafe8a9f9e93d5d84b02a9f90acf9bf58b9f288a.zip |
Mercurial 4.6 compatibility (#28725).
Patch by Marc Schlaich and Frédéric Fondement.
git-svn-id: http://svn.redmine.org/redmine/trunk@17351 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r-- | lib/redmine/scm/adapters/mercurial/redminehelper.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/redmine/scm/adapters/mercurial/redminehelper.py b/lib/redmine/scm/adapters/mercurial/redminehelper.py index 27c30da2f..d98ae5184 100644 --- a/lib/redmine/scm/adapters/mercurial/redminehelper.py +++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py @@ -54,6 +54,12 @@ command = cmdutil.command(cmdtable) _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 @@ def _tip(ui, repo): return len(repo) - 1 except TypeError: # Mercurial < 1.1 return repo.changelog.count() - 1 - tipctx = repo.changectx(tiprev()) + tipctx = _changectx(repo, tiprev()) ui.write('<tip revision="%d" node="%s"/>\n' % (tipctx.rev(), _x(node.hex(tipctx.node())))) @@ -94,13 +100,18 @@ def _branches(ui, repo): 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('<branch revision="%d" node="%s" name="%s"/>\n' % (r, _x(node.hex(n)), _x(t))) def _manifest(ui, repo, path, rev): - ctx = repo.changectx(rev) + ctx = _changectx(repo, rev) ui.write('<manifest revision="%d" path="%s">\n' % (ctx.rev(), _u(path))) @@ -155,7 +166,7 @@ def rhdiff(ui, repo, *pats, **opts): """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) |