Mercurial > hg > openjdk > trees
changeset 7:beb6291aff8b
compat: clone signature changed in hg 1.9
author | jcoomes |
---|---|
date | Sat, 09 Jul 2011 14:34:21 -0700 |
parents | 6647ebfa8499 |
children | c2c8b5e8a941 |
files | trees.py |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/trees.py Thu Apr 07 10:02:54 2011 -0700 +++ b/trees.py Sat Jul 09 14:34:21 2011 -0700 @@ -280,7 +280,7 @@ def _clonerepo(ui, source, dest, opts): _makeparentdir(dest) # Copied from mercurial/hg.py; need the returned dest repo. - return hg.clone(hg.remoteui(ui, opts), source, dest, + return hg_clone(ui, opts, source, dest, pull=opts.get('pull'), stream=opts.get('uncompressed'), rev=opts.get('rev'), @@ -320,8 +320,14 @@ subtrees = _clonesubtrees(ui, src, dst, opts) _writeconfig(dst, subtrees) +# Need to indirect through hg_clone for compatibility w/various hg versions. +hg_clone = None + def clone(ui, source, dest=None, *subtreeargs, **opts): '''copy one or more existing repositories to create a tree''' + global hg_clone + if not hg_clone: + hg_clone = compatible_clone() if subtreeargs: s = __builtin__.list(subtreeargs) s.extend(opts.get('subtrees')) # Note: extend does not return a value @@ -601,6 +607,19 @@ # ----------------------------- mercurial linkage ------------------------------ +# Tolerate changes to the signature of hg.clone(). +def compatible_clone(): + clone_args = inspect.getargspec(hg.clone)[0] + if len(clone_args) < 9: + # hg < 1.9: no 'peeropts' parameter (d976542986d2, bd1acea552ff). + def hg_clone(ui, peeropts, source, dest=None, pull=False, rev=None, + update=True, stream=False, branch=None): + rui = hg.remoteui(ui, peeropts) + return hg.clone(rui, source, dest, pull, rev, update, stream, + branch) + return hg_clone + return hg.clone + subtreesopt = [('', 'subtrees', [], _('path to subtree'), _('SUBTREE'))]