summaryrefslogtreecommitdiff
path: root/lib/git/objects/commit.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-02-13 20:02:01 +0100
committerSebastian Thiel <byronimo@gmail.com>2010-02-13 20:02:01 +0100
commit0bb2fc8129ed9adabec6a605bfe73605862b20d3 (patch)
tree66e642bdf3a1df4f00af35c7cdceadceba7c0102 /lib/git/objects/commit.py
parent15ee0ac0d56a5fb5ba13fae4288621ddd2185f17 (diff)
downloadgitpython-0bb2fc8129ed9adabec6a605bfe73605862b20d3.tar.gz
Commit.create: now handles empty repositories correctly
Diffstat (limited to 'lib/git/objects/commit.py')
-rw-r--r--lib/git/objects/commit.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/git/objects/commit.py b/lib/git/objects/commit.py
index 677aeebc..271b8f75 100644
--- a/lib/git/objects/commit.py
+++ b/lib/git/objects/commit.py
@@ -313,7 +313,13 @@ class Commit(base.Object, Iterable, diff.Diffable, utils.Traversable):
"""
parents = parent_commits
if parent_commits is None:
- parent_commits = [ repo.head.commit ]
+ try:
+ parent_commits = [ repo.head.commit ]
+ except ValueError:
+ # empty repositories have no head commit
+ parent_commits = list()
+ # END handle parent commits
+ # END if parent commits are unset
parent_args = [ ("-p", str(commit)) for commit in parent_commits ]
@@ -331,7 +337,14 @@ class Commit(base.Object, Iterable, diff.Diffable, utils.Traversable):
new_commit = cls(repo, commit_sha)
if head:
- repo.head.commit = new_commit
+ try:
+ repo.head.commit = new_commit
+ except ValueError:
+ # head is not yet set to master - create it and set it
+ import git.refs
+ master = git.refs.Head.create(repo, 'master', commit=new_commit)
+ repo.head.reference = master
+ # END handle empty repositories
# END advance head handling
return new_commit