aboutsummaryrefslogtreecommitdiffhomepage
path: root/gbp/git/repository.py
diff options
context:
space:
mode:
Diffstat (limited to 'gbp/git/repository.py')
-rw-r--r--gbp/git/repository.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/gbp/git/repository.py b/gbp/git/repository.py
index cc916a60..78b15d39 100644
--- a/gbp/git/repository.py
+++ b/gbp/git/repository.py
@@ -85,7 +85,18 @@ class GitRepository(object):
raise GitRepositoryError(
"Failed to get repository state at '%s'" % self.path)
self._bare = False if out.strip() != 'true' else True
- self._git_dir = '' if self._bare else '.git'
+
+ def _get_git_dir(self):
+ out, dummy, ret = self._git_inout('rev-parse', ['--git-dir'],
+ capture_stderr=True)
+ if ret:
+ raise GitRepositoryError(
+ "Failed to determine repos git-dir at '%s'" % self.path)
+ git_dir = out.strip()
+ if os.path.isabs(git_dir):
+ self._git_dir = git_dir
+ else:
+ self._git_dir = os.path.abspath(os.path.join(self.path, git_dir))
def __init__(self, path):
self._path = os.path.abspath(path)
@@ -100,6 +111,7 @@ class GitRepository(object):
except:
raise GitRepositoryError("No Git repository at '%s'" % self.path)
self._check_bare()
+ self._get_git_dir()
@staticmethod
def __build_env(extra_env):