summaryrefslogtreecommitdiff
path: root/git/cmd.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/cmd.py')
-rw-r--r--git/cmd.py35
1 files changed, 19 insertions, 16 deletions
diff --git a/git/cmd.py b/git/cmd.py
index f8e0acce..d28e0902 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -823,27 +823,30 @@ class Git(LazyMixin):
is realized as non-existent
:param kwargs:
- is a dict of keyword arguments.
- This function accepts the same optional keyword arguments
- as execute().
-
- ``Examples``::
+ It contains key-values for the following:
+ - the :meth:`execute()` kwds, as listed in :var:`execute_kwargs`;
+ - "command options" to be converted by :meth:`transform_kwargs()`;
+ - the `'insert_kwargs_after'` key which its value must match one of ``*args``,
+ and any cmd-options will be appended after the matched arg.
+
+ Examples::
+
git.rev_list('master', max_count=10, header=True)
+
+ turns into::
+
+ git rev-list max-count 10 --header master
:return: Same as ``execute``"""
# Handle optional arguments prior to calling transform_kwargs
# otherwise these'll end up in args, which is bad.
- _kwargs = dict()
- for kwarg in execute_kwargs:
- try:
- _kwargs[kwarg] = kwargs.pop(kwarg)
- except KeyError:
- pass
+ exec_kwargs = dict((k, v) for k, v in kwargs.items() if k in execute_kwargs)
+ opts_kwargs = dict((k, v) for k, v in kwargs.items() if k not in execute_kwargs)
- insert_after_this_arg = kwargs.pop('insert_kwargs_after', None)
+ insert_after_this_arg = opts_kwargs.pop('insert_kwargs_after', None)
# Prepare the argument list
- opt_args = self.transform_kwargs(**kwargs)
+ opt_args = self.transform_kwargs(**opts_kwargs)
ext_args = self.__unpack_args([a for a in args if a is not None])
if insert_after_this_arg is None:
@@ -852,11 +855,11 @@ class Git(LazyMixin):
try:
index = ext_args.index(insert_after_this_arg)
except ValueError:
- raise ValueError("Couldn't find argument '%s' in args %s to insert kwargs after"
+ raise ValueError("Couldn't find argument '%s' in args %s to insert cmd options after"
% (insert_after_this_arg, str(ext_args)))
# end handle error
args = ext_args[:index + 1] + opt_args + ext_args[index + 1:]
- # end handle kwargs
+ # end handle opts_kwargs
call = [self.GIT_PYTHON_GIT_EXECUTABLE]
@@ -871,7 +874,7 @@ class Git(LazyMixin):
call.append(dashify(method))
call.extend(args)
- return self.execute(call, **_kwargs)
+ return self.execute(call, **exec_kwargs)
def _parse_object_header(self, header_line):
"""