From a2d678792d3154d5de04a5225079f2e0457b45b7 Mon Sep 17 00:00:00 2001 From: Alexis Horgix Chotard Date: Fri, 25 Aug 2017 11:51:22 +0200 Subject: [PATCH] util: move expand_path from repo/base and use it in Git class init --- AUTHORS | 1 + git/cmd.py | 4 ++-- git/repo/base.py | 12 ++++-------- git/util.py | 7 +++++++ 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/AUTHORS b/AUTHORS index ad7c452c0..f0c02e338 100644 --- a/AUTHORS +++ b/AUTHORS @@ -19,5 +19,6 @@ Contributors are: -Timothy B. Hartman -Konstantin Popov -Peter Jones +-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 3637ac9e4..a2fcf50d9 100644 --- a/git/cmd.py +++ b/git/cmd.py @@ -31,7 +31,7 @@ ) 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 @@ def __init__(self, working_dir=None): 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 28bb2a5d7..74d56ee5f 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -29,7 +29,7 @@ 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 @@ __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 @@ def __init__(self, path=None, odbt=DefaultDBType, search_parent_directories=Fals 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 @@ def __init__(self, path=None, odbt=DefaultDBType, search_parent_directories=Fals 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 @@ def init(cls, path=None, mkdir=True, odbt=DefaultDBType, **kwargs): :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 5553a0aa9..39efdb1a3 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