# HG changeset patch # User Matt Mackall # Date 1240782643 18000 # Node ID f3abe032fc8982082cbd9f00bd9bcc0109a10138 # Parent d2504744e7a5df240687b886793e012ae2b6347b 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. diff -r d2504744e7a5 -r f3abe032fc89 hgext/fetch.py --- 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 diff -r d2504744e7a5 -r f3abe032fc89 hgext/graphlog.py --- 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] diff -r d2504744e7a5 -r f3abe032fc89 hgext/mq.py --- 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: diff -r d2504744e7a5 -r f3abe032fc89 hgext/patchbomb.py --- 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")) diff -r d2504744e7a5 -r f3abe032fc89 mercurial/cmdutil.py --- 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 diff -r d2504744e7a5 -r f3abe032fc89 mercurial/commands.py --- 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]