changeset 956:e7316a108780

ssh: fix breakage again with dulwich update dulwich 0.12.x changed the way they pass parameters around, so we reformat that to what hg-git expects. This is just plain ridiculous.
author Sean Farley <sean@farley.io>
date Mon, 14 Dec 2015 14:38:42 -0800
parents 528015bde034
children 06385a2b30f3 8140bbc2fdc2
files hggit/_ssh.py
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/_ssh.py
+++ b/hggit/_ssh.py
@@ -14,10 +14,13 @@
 
     class _Vendor(SSHVendor):
         def run_command(self, host, command, username=None, port=None):
-            # newer dulwich changes the way they pass command and parameters
-            # around, so we detect that here and reformat it back to what
-            # hg-git expects (e.g. "command 'arg1 arg2'")
-            if len(command) > 1:
+            if isinstance(command, basestring):
+                # 0.12.x dulwich sends the raw string
+                command = [command]
+            elif len(command) > 1:
+                # 0.11.x dulwich sends an array of [command arg1 arg2 ...], so
+                # we detect that here and reformat it back to what hg-git
+                # expects (e.g. "command 'arg1 arg2'")
                 command = ["%s '%s'" % (command[0], ' '.join(command[1:]))]
             sshcmd = ui.config("ui", "ssh", "ssh")
             args = util.sshargs(sshcmd, host, username, port)