summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--git/cmd.py4
-rw-r--r--git/repo/base.py12
-rw-r--r--git/util.py7
4 files changed, 14 insertions, 10 deletions
diff --git a/AUTHORS b/AUTHORS
index ad7c452c..f0c02e33 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -19,5 +19,6 @@ Contributors are:
-Timothy B. Hartman <tbhartman _at_ gmail.com>
-Konstantin Popov <konstantin.popov.89 _at_ yandex.ru>
-Peter Jones <pjones _at_ redhat.com>
+-Alexis Horgix Chotard
Portions derived from other open source works and are clearly marked.
diff --git a/git/cmd.py b/git/cmd.py
index 3637ac9e..a2fcf50d 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -31,7 +31,7 @@ from git.compat import (
)
from git.exc import CommandError
from git.odict import OrderedDict
-from git.util import is_cygwin_git, cygpath
+from git.util import is_cygwin_git, cygpath, expand_path
from .exc import (
GitCommandError,
@@ -405,7 +405,7 @@ class Git(LazyMixin):
It is meant to be the working tree directory if available, or the
.git directory in case of bare repositories."""
super(Git, self).__init__()
- self._working_dir = working_dir
+ self._working_dir = expand_path(working_dir)
self._git_options = ()
self._persistent_git_options = []
diff --git a/git/repo/base.py b/git/repo/base.py
index 28bb2a5d..74d56ee5 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -29,7 +29,7 @@ from git.index import IndexFile
from git.objects import Submodule, RootModule, Commit
from git.refs import HEAD, Head, Reference, TagReference
from git.remote import Remote, add_progress, to_progress_instance
-from git.util import Actor, finalize_process, decygpath, hex_to_bin
+from git.util import Actor, finalize_process, decygpath, hex_to_bin, expand_path
import os.path as osp
from .fun import rev_parse, is_git_dir, find_submodule_git_dir, touch, find_worktree_git_dir
@@ -50,10 +50,6 @@ BlameEntry = namedtuple('BlameEntry', ['commit', 'linenos', 'orig_path', 'orig_l
__all__ = ('Repo',)
-def _expand_path(p):
- return osp.normpath(osp.abspath(osp.expandvars(osp.expanduser(p))))
-
-
class Repo(object):
"""Represents a git repository and allows you to query references,
gather commit information, generate diffs, create and clone repositories query
@@ -121,7 +117,7 @@ class Repo(object):
epath = os.getcwd()
if Git.is_cygwin():
epath = decygpath(epath)
- epath = _expand_path(epath or path or os.getcwd())
+ epath = expand_path(epath or path or os.getcwd())
if not os.path.exists(epath):
raise NoSuchPathError(epath)
@@ -148,7 +144,7 @@ class Repo(object):
sm_gitpath = find_worktree_git_dir(dotgit)
if sm_gitpath is not None:
- self.git_dir = _expand_path(sm_gitpath)
+ self.git_dir = expand_path(sm_gitpath)
self._working_tree_dir = curpath
break
@@ -867,7 +863,7 @@ class Repo(object):
:return: ``git.Repo`` (the newly created repo)"""
if path:
- path = _expand_path(path)
+ path = expand_path(path)
if mkdir and path and not osp.exists(path):
os.makedirs(path, 0o755)
diff --git a/git/util.py b/git/util.py
index 5553a0aa..39efdb1a 100644
--- a/git/util.py
+++ b/git/util.py
@@ -340,6 +340,13 @@ def finalize_process(proc, **kwargs):
## TODO: No close proc-streams??
proc.wait(**kwargs)
+
+def expand_path(p):
+ try:
+ return osp.normpath(osp.abspath(osp.expandvars(osp.expanduser(p))))
+ except:
+ return None
+
#} END utilities
#{ Classes