diff options
author | Tommi Virtanen <tv@eagain.net> | 2007-09-01 18:27:25 -0700 |
---|---|---|
committer | Tommi Virtanen <tv@eagain.net> | 2007-09-01 18:59:13 -0700 |
commit | 97c093470e2cd5f968422be938b2086d07e68757 (patch) | |
tree | 2c858db70a4753347191adc1f9167f8b5ec35e8b /gitosis/repository.py | |
parent | Add gitosis-run-hook, to be run from git hooks. (diff) | |
download | gitosis-dakkar-97c093470e2cd5f968422be938b2086d07e68757.tar.gz gitosis-dakkar-97c093470e2cd5f968422be938b2086d07e68757.tar.bz2 gitosis-dakkar-97c093470e2cd5f968422be938b2086d07e68757.zip |
Add gitosis-init, for bootstrapping a new installation.
Diffstat (limited to 'gitosis/repository.py')
-rw-r--r-- | gitosis/repository.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gitosis/repository.py b/gitosis/repository.py index 764c980..9558494 100644 --- a/gitosis/repository.py +++ b/gitosis/repository.py @@ -1,4 +1,5 @@ import os +import re import subprocess from gitosis import util @@ -119,3 +120,28 @@ def export(git_dir, path): ) if returncode != 0: raise GitCheckoutIndexError('exit status %d' % returncode) + +class GitHasInitialCommitError(GitError): + """Check for initial commit failed""" + +class GitRevParseError(GitError): + """rev-parse failed""" + +def has_initial_commit(git_dir): + child = subprocess.Popen( + args=['git', 'rev-parse', 'HEAD'], + cwd=git_dir, + stdout=subprocess.PIPE, + close_fds=True, + env=dict(GIT_DIR='.'), + ) + got = child.stdout.read() + returncode = child.wait() + if returncode != 0: + raise GitRevParseError('exit status %d' % returncode) + if got == 'HEAD\n': + return False + elif re.match('^[0-9a-f]{40}\n$', got): + return True + else: + raise GitHasInitialCommitError('Unknown git HEAD: %r' % got) |