Support syncing over ssh with ssh://host//path.
authorMichał Górny <mgorny@gentoo.org>
Fri, 19 Nov 2010 18:58:26 +0000 (19:58 +0100)
committerZac Medico <zmedico@gentoo.org>
Fri, 19 Nov 2010 19:27:12 +0000 (11:27 -0800)
pym/_emerge/actions.py

index 0247fd3f0b4225d648d7b8202373e7f2f9a28250..90d5dcd027fdf303e7f272918a453e67d5155b1b 100644 (file)
@@ -1999,7 +1999,7 @@ def action_sync(settings, trees, mtimedb, myopts, myaction):
                exitcode = git_sync_timestamps(settings, myportdir)
                if exitcode == os.EX_OK:
                        updatecache_flg = True
-       elif syncuri[:8]=="rsync://":
+       elif syncuri[:8]=="rsync://" or syncuri[:6]=="ssh://":
                for vcs_dir in vcs_dirs:
                        writemsg_level(("!!! %s appears to be under revision " + \
                                "control (contains %s).\n!!! Aborting rsync sync.\n") % \
@@ -2107,8 +2107,8 @@ def action_sync(settings, trees, mtimedb, myopts, myaction):
                        maxretries = -1 #default number of retries
 
                retries=0
-               user_name, hostname, port = re.split(
-                       "rsync://([^:/]+@)?([^:/]*)(:[0-9]+)?", syncuri, maxsplit=3)[1:4]
+               proto, user_name, hostname, port = re.split(
+                       "(rsync|ssh)://([^:/]+@)?([^:/]*)(:[0-9]+)?", syncuri, maxsplit=4)[1:5]
                if port is None:
                        port=""
                if user_name is None:
@@ -2213,6 +2213,9 @@ def action_sync(settings, trees, mtimedb, myopts, myaction):
                                        "\n\n>>> Starting retry %d of %d with %s\n" % \
                                        (retries, effective_maxretries, dosyncuri), noiselevel=-1)
 
+                       if dosyncuri.startswith('ssh://'):
+                               dosyncuri = dosyncuri[6:].replace('/', ':', 1)
+
                        if mytimestamp != 0 and "--quiet" not in myopts:
                                print(">>> Checking server timestamp ...")