mercurial/hg.py
changeset 11273 d1908cb95a82
parent 11256 94b7b3a1ae1b
child 11300 24eeca1f2791
--- a/mercurial/hg.py	Thu Jun 03 21:38:30 2010 +0200
+++ b/mercurial/hg.py	Tue Jun 01 11:18:57 2010 -0500
@@ -400,3 +400,29 @@
 def verify(repo):
     """verify the consistency of a repository"""
     return verifymod.verify(repo)
+
+def remoteui(src, opts):
+    'build a remote ui from ui or repo and opts'
+    if hasattr(src, 'baseui'): # looks like a repository
+        dst = src.baseui.copy() # drop repo-specific config
+        src = src.ui # copy target options from repo
+    else: # assume it's a global ui object
+        dst = src.copy() # 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)
+
+    # copy auth and http_proxy section settings
+    for sect in ('auth', 'http_proxy'):
+        for key, val in src.configitems(sect):
+            dst.setconfig(sect, key, val)
+
+    return dst