summaryrefslogtreecommitdiff
path: root/git/cmd.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/cmd.py')
-rw-r--r--git/cmd.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/git/cmd.py b/git/cmd.py
index b3274dd8..d420cf33 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -236,7 +236,7 @@ class Git(LazyMixin):
if attr == '_version_info':
# We only use the first 4 numbers, as everthing else could be strings in fact (on windows)
version_numbers = self._call_process('version').split(' ')[2]
- self._version_info = tuple(int(n) for n in version_numbers.split('.')[:4])
+ self._version_info = tuple(int(n) for n in version_numbers.split('.')[:4] if n.isdigit())
else:
super(Git, self)._set_cache_(attr)
#END handle version info
@@ -380,7 +380,10 @@ class Git(LazyMixin):
# END handle debug printing
if with_exceptions and status != 0:
- raise GitCommandError(command, status, stderr_value)
+ if with_extended_output:
+ raise GitCommandError(command, status, stderr_value, stdout_value)
+ else:
+ raise GitCommandError(command, status, stderr_value)
# Allow access to the command's status code
if with_extended_output:
@@ -410,12 +413,16 @@ class Git(LazyMixin):
@classmethod
def __unpack_args(cls, arg_list):
if not isinstance(arg_list, (list,tuple)):
+ if isinstance(arg_list, unicode):
+ return [arg_list.encode('utf-8')]
return [ str(arg_list) ]
outlist = list()
for arg in arg_list:
if isinstance(arg_list, (list, tuple)):
outlist.extend(cls.__unpack_args( arg ))
+ elif isinstance(arg_list, unicode):
+ outlist.append(arg_list.encode('utf-8'))
# END recursion
else:
outlist.append(str(arg))