summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-11-24 22:23:47 +0100
committerSebastian Thiel <byronimo@gmail.com>2010-11-24 22:23:47 +0100
commit7da101ba9a09a22a85c314a8909fd23468ae66f0 (patch)
treed68f6529275838b9a962c4b76533e8445441af34
parentb81273e70c9c31ae02cb0a2d6e697d7a4e2b683a (diff)
downloadgitpython-7da101ba9a09a22a85c314a8909fd23468ae66f0.tar.gz
submodule.update: previous_commit is now set according to the stored reflog value, and is not using ORIG_HEAD anymore
-rw-r--r--objects/submodule/root.py20
-rw-r--r--test/test_refs.py3
2 files changed, 11 insertions, 12 deletions
diff --git a/objects/submodule/root.py b/objects/submodule/root.py
index ca51b34e..753c6df4 100644
--- a/objects/submodule/root.py
+++ b/objects/submodule/root.py
@@ -68,19 +68,15 @@ class RootModule(Submodule):
##################
cur_commit = repo.head.commit
if previous_commit is None:
- symref = repo.head.orig_head()
try:
- previous_commit = symref.commit
- except Exception:
- pcommits = cur_commit.parents
- if pcommits:
- previous_commit = pcommits[0]
- else:
- # in this special case, we just diff against ourselve, which
- # means exactly no change
- previous_commit = cur_commit
- # END handle initial commit
- # END no ORIG_HEAD
+ previous_commit = repo.commit(repo.head.log_entry(-1).oldhexsha)
+ if previous_commit.binsha == previous_commit.NULL_BIN_SHA:
+ raise IndexError
+ #END handle initial commit
+ except IndexError:
+ # in new repositories, there is no previous commit
+ previous_commit = cur_commit
+ #END exception handling
else:
previous_commit = repo.commit(previous_commit) # obtain commit object
# END handle previous commit
diff --git a/test/test_refs.py b/test/test_refs.py
index 52937de1..2338b4e4 100644
--- a/test/test_refs.py
+++ b/test/test_refs.py
@@ -149,6 +149,9 @@ class TestRefs(TestBase):
assert self.rorepo.head.reference.is_valid()
assert SymbolicReference(self.rorepo, 'hellothere').is_valid() == False
+ def test_orig_head(self):
+ assert type(self.rorepo.head.orig_head()) == SymbolicReference
+
@with_rw_repo('0.1.6')
def test_head_reset(self, rw_repo):
cur_head = rw_repo.head