* Avoid recursion limit issues resolving deltas. (William Grant, #81)
+ * Allow arguments in local client binary path overrides.
+ (Jelmer Vernooij)
+
0.10.1 2015-03-25
BUG FIXES
from io import BytesIO, BufferedReader
import dulwich
import select
+import shlex
import socket
import subprocess
import sys
def _get_cmd_path(self, cmd):
cmd = cmd.decode('ascii')
- return self.alternative_paths.get(cmd, 'git-' + cmd)
+ return shlex.split(self.alternative_paths.get(cmd, 'git-' + cmd))
def _connect(self, cmd, path):
if path.startswith("/~"):
path = path[1:]
con = get_ssh_vendor().run_command(
- self.host, [self._get_cmd_path(cmd), path],
+ self.host, self._get_cmd_path(cmd) + [path],
port=self.port, username=self.username)
return (Protocol(con.read, con.write, con.close,
report_activity=self._report_activity),
client.get_ssh_vendor = self.real_vendor
def test_default_command(self):
- self.assertEqual('git-upload-pack',
+ self.assertEqual(['git-upload-pack'],
self.client._get_cmd_path(b'upload-pack'))
def test_alternative_command_path(self):
self.client.alternative_paths['upload-pack'] = (
'/usr/lib/git/git-upload-pack')
- self.assertEqual('/usr/lib/git/git-upload-pack',
+ self.assertEqual(['/usr/lib/git/git-upload-pack'],
+ self.client._get_cmd_path(b'upload-pack'))
+
+ def test_alternative_command_path_spaces(self):
+ self.client.alternative_paths['upload-pack'] = (
+ '/usr/lib/git/git-upload-pack -ibla')
+ self.assertEqual(['/usr/lib/git/git-upload-pack', '-ibla'],
self.client._get_cmd_path(b'upload-pack'))
def test_connect(self):