summaryrefslogtreecommitdiff
path: root/git/cmd.py
diff options
context:
space:
mode:
authorKostis Anagnostopoulos <ankostis@gmail.com>2016-10-01 16:02:20 +0200
committerKostis Anagnostopoulos <ankostis@gmail.com>2016-10-01 16:33:20 +0200
commitb8b025f719b2c3203e194580bbd0785a26c08ebd (patch)
tree8cec9ba13035f9489fdaa56e550e93bc976372fc /git/cmd.py
parenta79cf677744e2c1721fa55f934fa07034bc54b0a (diff)
downloadgitpython-b8b025f719b2c3203e194580bbd0785a26c08ebd.tar.gz
Win, #519: FIX repo TCs.
+ FIX TestRepo.test_submodule_update(): + submod: del `.git` file prior overwrite; Windows denied otherwise! + FIX TestRepo.test_untracked_files(): + In the `git add <file>` case, it failed with unicode args on PY2. Had to encode them with `locale.getpreferredencoding()` AND use SHELL. + cmd: add `shell` into `execute()` kwds, for overriding USE_SHELL per command. + repo: replace blocky `communicate()` in `_clone()` with thread-pumps. + test_repo.py: unittestize (almost all) assertions. + Replace open --> with open for index (base and TC). + test_index.py: Enabled a dormant assertion.
Diffstat (limited to 'git/cmd.py')
-rw-r--r--git/cmd.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/git/cmd.py b/git/cmd.py
index b47b2a02..f4f5f99a 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -45,7 +45,7 @@ from .util import (
execute_kwargs = set(('istream', 'with_keep_cwd', 'with_extended_output',
'with_exceptions', 'as_process', 'stdout_as_string',
'output_stream', 'with_stdout', 'kill_after_timeout',
- 'universal_newlines'))
+ 'universal_newlines', 'shell'))
log = logging.getLogger('git.cmd')
log.addHandler(logging.NullHandler())
@@ -176,8 +176,8 @@ class Git(LazyMixin):
GIT_PYTHON_GIT_EXECUTABLE = os.environ.get(_git_exec_env_var, git_exec_name)
# If True, a shell will be used when executing git commands.
- # This should only be desirable on windows, see https://github.com/gitpython-developers/GitPython/pull/126
- # for more information
+ # This should only be desirable on Windows, see https://github.com/gitpython-developers/GitPython/pull/126
+ # and check `git/test_repo.py:TestRepo.test_untracked_files()` TC for an example where it is required.
# Override this value using `Git.USE_SHELL = True`
USE_SHELL = False
@@ -422,6 +422,7 @@ class Git(LazyMixin):
kill_after_timeout=None,
with_stdout=True,
universal_newlines=False,
+ shell=None,
**subprocess_kwargs
):
"""Handles executing the command on the shell and consumes and returns
@@ -479,6 +480,9 @@ class Git(LazyMixin):
:param universal_newlines:
if True, pipes will be opened as text, and lines are split at
all known line endings.
+ :param shell:
+ Whether to invoke commands through a shell (see `Popen(..., shell=True)`).
+ It overrides :attr:`USE_SHELL` if it is not `None`.
:param kill_after_timeout:
To specify a timeout in seconds for the git command, after which the process
should be killed. This will have no effect if as_process is set to True. It is
@@ -544,7 +548,7 @@ class Git(LazyMixin):
stdin=istream,
stderr=PIPE,
stdout=PIPE if with_stdout else open(os.devnull, 'wb'),
- shell=self.USE_SHELL,
+ shell=shell is not None and shell or self.USE_SHELL,
close_fds=(is_posix), # unsupported on windows
universal_newlines=universal_newlines,
creationflags=PROC_CREATIONFLAGS,