summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2014-11-19 11:20:01 +0100
committerSebastian Thiel <byronimo@gmail.com>2014-11-19 11:20:01 +0100
commit706d3a28b6fa2d7ff90bbc564a53f4007321534f (patch)
tree62cc11be743350b13f85cc8945233ece21c60610
parent22c4671b58a6289667f7ec132bc5251672411150 (diff)
downloadgitpython-706d3a28b6fa2d7ff90bbc564a53f4007321534f.tar.gz
Minor fix to make read_gitfile work .
-rw-r--r--git/repo/base.py6
-rw-r--r--git/repo/fun.py27
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