Mercurial > hg-stable
changeset 8188:f3abe032fc89
add cmdutil.remoteui
remoteui sorts out the issues of getting ssh config options from the
local repo into the remote one while not copying other options like hooks.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Apr 2009 16:50:43 -0500 |
parents | d2504744e7a5 |
children | d2899a856f9f |
files | hgext/fetch.py hgext/graphlog.py hgext/mq.py hgext/patchbomb.py mercurial/cmdutil.py mercurial/commands.py |
diffstat | 6 files changed, 32 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/fetch.py Sun Apr 26 16:50:43 2009 -0500 +++ b/hgext/fetch.py Sun Apr 26 16:50:43 2009 -0500 @@ -60,9 +60,8 @@ raise util.Abort(_('multiple heads in this branch ' '(use "hg heads ." and "hg merge" to merge)')) - cmdutil.setremoteconfig(ui, opts) - - other = hg.repository(ui, ui.expandpath(source)) + other = hg.repository(cmdutil.remoteui(repo, opts), + ui.expandpath(source)) ui.status(_('pulling from %s\n') % url.hidepassword(ui.expandpath(source))) revs = None
--- a/hgext/graphlog.py Sun Apr 26 16:50:43 2009 -0500 +++ b/hgext/graphlog.py Sun Apr 26 16:50:43 2009 -0500 @@ -321,10 +321,9 @@ dest, revs, checkout = hg.parseurl( ui.expandpath(dest or 'default-push', dest or 'default'), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) if revs: revs = [repo.lookup(rev) for rev in revs] - other = hg.repository(ui, dest) + other = hg.repository(cmdutil.remoteui(ui, opts), dest) ui.status(_('comparing with %s\n') % url.hidepassword(dest)) o = repo.findoutgoing(other, force=opts.get('force')) if not o: @@ -348,9 +347,7 @@ check_unsupported_flags(opts) source, revs, checkout = hg.parseurl(ui.expandpath(source), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) - - other = hg.repository(ui, source) + other = hg.repository(cmdutil.remoteui(repo, opts), source) ui.status(_('comparing with %s\n') % url.hidepassword(source)) if revs: revs = [other.lookup(rev) for rev in revs]
--- a/hgext/mq.py Sun Apr 26 16:50:43 2009 -0500 +++ b/hgext/mq.py Sun Apr 26 16:50:43 2009 -0500 @@ -1744,10 +1744,9 @@ if url.endswith('/'): url = url[:-1] return url + '/.hg/patches' - cmdutil.setremoteconfig(ui, opts) if dest is None: dest = hg.defaultdest(source) - sr = hg.repository(ui, ui.expandpath(source)) + sr = hg.repository(cmdutil.remoteui(ui, opts), ui.expandpath(source)) if opts['patches']: patchespath = ui.expandpath(opts['patches']) else:
--- a/hgext/patchbomb.py Sun Apr 26 16:50:43 2009 -0500 +++ b/hgext/patchbomb.py Sun Apr 26 16:50:43 2009 -0500 @@ -220,7 +220,7 @@ '''Return the revisions present locally but not in dest''' dest = ui.expandpath(dest or 'default-push', dest or 'default') revs = [repo.lookup(rev) for rev in revs] - other = hg.repository(ui, dest) + other = hg.repository(cmdutil.remoteui(repo, opts), dest) ui.status(_('comparing with %s\n') % dest) o = repo.findoutgoing(other) if not o: @@ -258,7 +258,6 @@ or opts.get('patches')): raise util.Abort(_('specify at least one changeset with -r or -o')) - cmdutil.setremoteconfig(ui, opts) if opts.get('outgoing') and opts.get('bundle'): raise util.Abort(_("--outgoing mode always on with --bundle;" " do not re-specify --outgoing"))
--- a/mercurial/cmdutil.py Sun Apr 26 16:50:43 2009 -0500 +++ b/mercurial/cmdutil.py Sun Apr 26 16:50:43 2009 -0500 @@ -98,12 +98,25 @@ limit = sys.maxint return limit -def setremoteconfig(ui, opts): - "copy remote options to ui tree" - if opts.get('ssh'): - ui.setconfig("ui", "ssh", opts['ssh']) - if opts.get('remotecmd'): - ui.setconfig("ui", "remotecmd", opts['remotecmd']) +def remoteui(src, opts): + 'build a remote ui from ui or repo and opts' + if hasattr(src, 'ui'): # looks like a repository + dst = src.ui.parentui # drop repo-specific config + src = src.ui # copy target options from repo + else: # assume it's a ui object + dst = src # keep all global options + + # copy ssh-specific options + for o in 'ssh', 'remotecmd': + v = opts.get(o) or src.config('ui', o) + if v: + dst.setconfig("ui", o, v) + # copy bundle-specific options + r = src.config('bundle', 'mainreporoot') + if r: + dst.setconfig('bundle', 'mainreporoot', r) + + return dst def revpair(repo, revs): '''return pair of nodes, given list of revisions. second item can
--- a/mercurial/commands.py Sun Apr 26 16:50:43 2009 -0500 +++ b/mercurial/commands.py Sun Apr 26 16:50:43 2009 -0500 @@ -521,10 +521,9 @@ seen[p] = 1 visit.append(p) else: - cmdutil.setremoteconfig(ui, opts) dest, revs, checkout = hg.parseurl( ui.expandpath(dest or 'default-push', dest or 'default'), revs) - other = hg.repository(ui, dest) + other = hg.repository(cmdutil.remoteui(repo, opts), dest) o = repo.findoutgoing(other, force=opts.get('force')) if revs: @@ -615,8 +614,7 @@ metadata under the .hg directory, such as mq. """ - cmdutil.setremoteconfig(ui, opts) - hg.clone(ui, source, dest, + hg.clone(cmdutil.remoteui(ui, opts), source, dest, pull=opts.get('pull'), stream=opts.get('uncompressed'), rev=opts.get('rev'), @@ -1766,9 +1764,7 @@ """ limit = cmdutil.loglimit(opts) source, revs, checkout = hg.parseurl(ui.expandpath(source), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) - - other = hg.repository(ui, source) + other = hg.repository(cmdutil.remoteui(repo, opts), source) ui.status(_('comparing with %s\n') % url.hidepassword(source)) if revs: revs = [other.lookup(rev) for rev in revs] @@ -1834,8 +1830,7 @@ It is possible to specify an ssh:// URL as the destination. See 'hg help urls' for more information. """ - cmdutil.setremoteconfig(ui, opts) - hg.repository(ui, dest, create=1) + hg.repository(cmdutil.remoteui(ui, opts), dest, create=1) def locate(ui, repo, *pats, **opts): """locate files matching specific patterns @@ -2084,11 +2079,10 @@ limit = cmdutil.loglimit(opts) dest, revs, checkout = hg.parseurl( ui.expandpath(dest or 'default-push', dest or 'default'), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) if revs: revs = [repo.lookup(rev) for rev in revs] - other = hg.repository(ui, dest) + other = hg.repository(cmdutil.remoteui(repo, opts), dest) ui.status(_('comparing with %s\n') % url.hidepassword(dest)) o = repo.findoutgoing(other, force=opts.get('force')) if not o: @@ -2199,9 +2193,7 @@ See 'hg help urls' for more information. """ source, revs, checkout = hg.parseurl(ui.expandpath(source), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) - - other = hg.repository(ui, source) + other = hg.repository(cmdutil.remoteui(repo, opts), source) ui.status(_('pulling from %s\n') % url.hidepassword(source)) if revs: try: @@ -2237,9 +2229,7 @@ """ dest, revs, checkout = hg.parseurl( ui.expandpath(dest or 'default-push', dest or 'default'), opts.get('rev')) - cmdutil.setremoteconfig(ui, opts) - - other = hg.repository(ui, dest) + other = hg.repository(cmdutil.remoteui(repo, opts), dest) ui.status(_('pushing to %s\n') % url.hidepassword(dest)) if revs: revs = [repo.lookup(rev) for rev in revs]