diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2014-11-19 11:20:01 +0100 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2014-11-19 11:20:01 +0100 |
commit | 706d3a28b6fa2d7ff90bbc564a53f4007321534f (patch) | |
tree | 62cc11be743350b13f85cc8945233ece21c60610 | |
parent | 22c4671b58a6289667f7ec132bc5251672411150 (diff) | |
download | gitpython-706d3a28b6fa2d7ff90bbc564a53f4007321534f.tar.gz |
Minor fix to make read_gitfile work .
-rw-r--r-- | git/repo/base.py | 6 | ||||
-rw-r--r-- | git/repo/fun.py | 27 |
2 files changed, 19 insertions, 14 deletions
diff --git a/git/repo/base.py b/git/repo/base.py index a111d643..5273d4b2 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -35,8 +35,8 @@ from fun import ( rev_parse, is_git_dir, find_git_dir, - touch - read_gitfile, + read_gitfile, + touch, ) import os @@ -117,7 +117,7 @@ class Repo(object): self.git_dir = gitpath self._working_tree_dir = curpath break - gitpath = read_gitfile(gitpath) + gitpath = read_gitfile(curpath) if gitpath: self.git_dir = gitpath self._working_tree_dir = curpath diff --git a/git/repo/fun.py b/git/repo/fun.py index f5abc27a..0bff677a 100644 --- a/git/repo/fun.py +++ b/git/repo/fun.py @@ -13,7 +13,8 @@ from gitdb.util import ( ) from string import digits -__all__ = ('rev_parse', 'is_git_dir', 'touch') +__all__ = ('rev_parse', 'is_git_dir', 'touch', 'read_gitfile', 'find_git_dir', 'name_to_object', + 'short_to_long', 'deref_tag', 'to_commit') def touch(filename): @@ -46,16 +47,20 @@ def find_git_dir(d): return None def read_gitfile(f): - """ This is taken from the git setup.c:read_gitfile function. - :return gitdir path or None if gitfile is invalid.""" - - if not isfile(f): - return None - line = open(f, 'r').readline().rstrip() - if line[0:8] != 'gitdir: ': - return None - path = os.path.realpath(line[8:]) - return path if is_git_dir(path) else None + """ This is taken from the git setup.c:read_gitfile function. + :return gitdir path or None if gitfile is invalid.""" + if f is None: + return None + try: + line = open(f, 'r').readline().rstrip() + except (OSError, IOError): + # File might not exist or is unreadable - ignore + return None + # end handle file access + if line[0:8] != 'gitdir: ': + return None + path = os.path.realpath(line[8:]) + return path if is_git_dir(path) else None def short_to_long(odb, hexsha): """:return: long hexadecimal sha1 from the given less-than-40 byte hexsha |