Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitaab7dc2

Browse files
authored
Merge pull request#536 from bpoldrack/nf-persistent-git-options
Allow for setting git generic options, persisted across subcommand calls.
2 parents9e4a454 +bf8ce94 commitaab7dc2

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

‎git/cmd.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ class Git(LazyMixin):
161161
Set its value to 'full' to see details about the returned values.
162162
"""
163163
__slots__= ("_working_dir","cat_file_all","cat_file_header","_version_info",
164-
"_git_options","_environment")
164+
"_git_options","_persistent_git_options","_environment")
165165

166166
_excluded_= ('cat_file_all','cat_file_header','_version_info')
167167

@@ -386,6 +386,7 @@ def __init__(self, working_dir=None):
386386
super(Git,self).__init__()
387387
self._working_dir=working_dir
388388
self._git_options= ()
389+
self._persistent_git_options= []
389390

390391
# Extra environment variables to pass to git commands
391392
self._environment= {}
@@ -402,6 +403,20 @@ def __getattr__(self, name):
402403
returnLazyMixin.__getattr__(self,name)
403404
returnlambda*args,**kwargs:self._call_process(name,*args,**kwargs)
404405

406+
defset_persistent_git_options(self,**kwargs):
407+
"""Specify command line options to the git executable
408+
for subsequent subcommand calls
409+
410+
:param kwargs:
411+
is a dict of keyword arguments.
412+
these arguments are passed as in _call_process
413+
but will be passed to the git command rather than
414+
the subcommand.
415+
"""
416+
417+
self._persistent_git_options=self.transform_kwargs(
418+
split_single_char_options=True,**kwargs)
419+
405420
def_set_cache_(self,attr):
406421
ifattr=='_version_info':
407422
# We only use the first 4 numbers, as everthing else could be strings in fact (on windows)
@@ -820,7 +835,10 @@ def _call_process(self, method, *args, **kwargs):
820835

821836
call= [self.GIT_PYTHON_GIT_EXECUTABLE]
822837

823-
# add the git options, the reset to empty
838+
# add persistent git options
839+
call.extend(self._persistent_git_options)
840+
841+
# add the git options, then reset to empty
824842
# to avoid side_effects
825843
call.extend(self._git_options)
826844
self._git_options= ()

‎git/test/test_git.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,20 @@ def test_options_are_passed_to_git(self):
160160
git_command_version=self.git.version()
161161
self.assertEquals(git_version,git_command_version)
162162

163+
deftest_persistent_options(self):
164+
git_command_version=self.git.version()
165+
# analog to test_options_are_passed_to_git
166+
self.git.set_persistent_git_options(version=True)
167+
git_version=self.git.NoOp()
168+
self.assertEquals(git_version,git_command_version)
169+
# subsequent calls keep this option:
170+
git_version_2=self.git.NoOp()
171+
self.assertEquals(git_version_2,git_command_version)
172+
173+
# reset to empty:
174+
self.git.set_persistent_git_options()
175+
self.assertRaises(GitCommandError,self.git.NoOp)
176+
163177
deftest_single_char_git_options_are_passed_to_git(self):
164178
input_value='TestValue'
165179
output_value=self.git(c='user.name=%s'%input_value).config('--get','user.name')

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp