summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2008-11-22 17:44:29 +0100
committerGuido Guenther <agx@sigxcpu.org>2008-11-22 17:46:37 +0100
commit1898f63e8a5cc389a992e18094b35b3ceb3857dd (patch)
tree873c59c1f455740c294201d44ea573c84037ef7b
parenta5d3c847337fd34f491b386e2b7cd42fca23b941 (diff)
add GitRepository.is_empty and create_repo helpers
-rw-r--r--gbp/git_utils.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/gbp/git_utils.py b/gbp/git_utils.py
index 90926f00..da8884e2 100644
--- a/gbp/git_utils.py
+++ b/gbp/git_utils.py
@@ -5,7 +5,7 @@
import subprocess
import os.path
-from command_wrappers import (GitAdd, GitRm, GitCheckoutBranch, copy_from)
+from command_wrappers import (GitAdd, GitRm, GitCheckoutBranch, GitInit, copy_from)
import dateutil.parser
import calendar
@@ -90,6 +90,14 @@ class GitRepository(object):
ret = True
return (ret, "".join(out))
+ def is_empty(self):
+ """returns True if repo is empty (doesn't have any commits)"""
+ # an empty repo has no branches:
+ if self.get_branch():
+ return False
+ else:
+ return True
+
def index_files(self):
"""List files in the index"""
out, ret = self.__git_getoutput('ls-files', ['-z'])
@@ -146,6 +154,22 @@ class GitRepository(object):
return not self.is_clean()[0]
+def create_repo(path):
+ """create a repository at path"""
+ abspath = os.path.abspath(path)
+ pwd = os.path.abspath(os.curdir)
+ try:
+ os.makedirs(abspath)
+ os.chdir(abspath)
+ GitInit()()
+ return GitRepository(abspath)
+ except OSError, err:
+ raise GitRepositoryError, "Cannot create Git repository at %s: %s "% err[1]
+ finally:
+ os.chdir(pwd)
+ return None
+
+
def build_tag(format, version):
"""Generate a tag from a given format and a version"""
return format % dict(version=sanitize_version(version))