Content-Length: 5919 | pFad | http://github.com/gitpython-developers/GitPython/pull/529.patch
thub.com
From cc6529cc694688145cc176585764c5ba1d10d326 Mon Sep 17 00:00:00 2001
From: Kostis Anagnostopoulos
Date: Sat, 1 Oct 2016 20:14:50 +0200
Subject: [PATCH] repo, cmd: DROP UNEEDED Win path for chcwd & check for '~'
homedir
+ Do not abspath twice when contructing cloned repo.
+ Add `git.repo.base` logger.
---
git/cmd.py | 15 +++-----------
git/repo/base.py | 52 +++++++++++-------------------------------------
2 files changed, 15 insertions(+), 52 deletions(-)
diff --git a/git/cmd.py b/git/cmd.py
index 88d62aa45..b1c18998c 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -42,12 +42,12 @@
)
-execute_kwargs = set(('istream', 'with_keep_cwd', 'with_extended_output',
+execute_kwargs = set(('istream', 'with_extended_output',
'with_exceptions', 'as_process', 'stdout_as_string',
'output_stream', 'with_stdout', 'kill_after_timeout',
'universal_newlines', 'shell'))
-log = logging.getLogger('git.cmd')
+log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
__all__ = ('Git',)
@@ -413,7 +413,6 @@ def version_info(self):
def execute(self, command,
istream=None,
- with_keep_cwd=False,
with_extended_output=False,
with_exceptions=True,
as_process=False,
@@ -436,11 +435,6 @@ def execute(self, command,
:param istream:
Standard input filehandle passed to subprocess.Popen.
- :param with_keep_cwd:
- Whether to use the current working directory from os.getcwd().
- The cmd otherwise uses its own working_dir that it has been initialized
- with if possible.
-
:param with_extended_output:
Whether to return a (status, stdout, stderr) tuple.
@@ -513,10 +507,7 @@ def execute(self, command,
log.info(' '.join(command))
# Allow the user to have the command executed in their working dir.
- if with_keep_cwd or self._working_dir is None:
- cwd = os.getcwd()
- else:
- cwd = self._working_dir
+ cwd = self._working_dir or os.getcwd()
# Start the process
env = os.environ.copy()
diff --git a/git/repo/base.py b/git/repo/base.py
index 8b68b5ff2..4e9549eea 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -62,8 +62,11 @@
import os
import sys
import re
+import logging
from collections import namedtuple
+log = logging.getLogger(__name__)
+
DefaultDBType = GitCmdObjectDB
if sys.version_info[:2] < (2, 5): # python 2.4 compatiblity
DefaultDBType = GitCmdObjectDB
@@ -871,46 +874,15 @@ def _clone(cls, git, url, path, odb_default_type, progress, **kwargs):
if progress is not None:
progress = to_progress_instance(progress)
- # special handling for windows for path at which the clone should be
- # created.
- # tilde '~' will be expanded to the HOME no matter where the ~ occours. Hence
- # we at least give a proper error instead of letting git fail
- prev_cwd = None
- prev_path = None
odbt = kwargs.pop('odbt', odb_default_type)
- if is_win:
- if '~' in path:
- raise OSError("Git cannot handle the ~ character in path %r correctly" % path)
-
- # on windows, git will think paths like c: are relative and prepend the
- # current working dir ( before it fails ). We temporarily adjust the working
- # dir to make this actually work
- match = re.match("(\w:[/\\\])(.*)", path)
- if match:
- prev_cwd = os.getcwd()
- prev_path = path
- drive, rest_of_path = match.groups()
- os.chdir(drive)
- path = rest_of_path
- kwargs['with_keep_cwd'] = True
- # END cwd preparation
- # END windows handling
-
- try:
- proc = git.clone(url, path, with_extended_output=True, as_process=True,
- v=True, **add_progress(kwargs, git, progress))
- if progress:
- handle_process_output(proc, None, progress.new_message_handler(), finalize_process)
- else:
- (stdout, stderr) = proc.communicate() # FIXME: Will block of outputs are big!
- finalize_process(proc, stderr=stderr)
- # end handle progress
- finally:
- if prev_cwd is not None:
- os.chdir(prev_cwd)
- path = prev_path
- # END reset previous working dir
- # END bad windows handling
+ proc = git.clone(url, path, with_extended_output=True, as_process=True,
+ v=True, **add_progress(kwargs, git, progress))
+ if progress:
+ handle_process_output(proc, None, progress.new_message_handler(), finalize_process)
+ else:
+ (stdout, stderr) = proc.communicate() # FIXME: Will block of outputs are big!
+ log.debug("Cmd(%s)'s unused stdout: %s", getattr(proc, 'args', ''), stdout)
+ finalize_process(proc, stderr=stderr)
# our git command could have a different working dir than our actual
# environment, hence we prepend its working dir if required
@@ -922,7 +894,7 @@ def _clone(cls, git, url, path, odb_default_type, progress, **kwargs):
# that contains the remote from which we were clones, git stops liking it
# as it will escape the backslashes. Hence we undo the escaping just to be
# sure
- repo = cls(os.path.abspath(path), odbt=odbt)
+ repo = cls(path, odbt=odbt)
if repo.remotes:
with repo.remotes[0].config_writer as writer:
writer.set_value('url', repo.remotes[0].url.replace("\\\\", "\\").replace("\\", "/"))
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/gitpython-developers/GitPython/pull/529.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy