diff options
-rw-r--r-- | lib/git/remote.py | 8 | ||||
-rw-r--r-- | test/git/test_remote.py | 18 |
2 files changed, 21 insertions, 5 deletions
diff --git a/lib/git/remote.py b/lib/git/remote.py index dde3be4c..02a955b0 100644 --- a/lib/git/remote.py +++ b/lib/git/remote.py @@ -96,6 +96,14 @@ class Remote(LazyMixin, Iterable): """ return self.ref.name + @property + def commit(self): + """ + Returns + Commit of our remote ref + """ + return self.ref.commit + @classmethod def _from_line(cls, repo, line, fetch_line): """ diff --git a/test/git/test_remote.py b/test/git/test_remote.py index 638cb103..6870e0e5 100644 --- a/test/git/test_remote.py +++ b/test/git/test_remote.py @@ -106,14 +106,22 @@ class TestRemote(TestBase): # add new tag reference rtag = TagReference.create(remote_repo, "1.0-RV_hello.there") res = fetch_and_test(remote, tags=True) - ltag = res[str(rtag)] - assert isinstance(ltag.ref, TagReference) - - # delete tag + tinfo = res[str(rtag)] + assert isinstance(tinfo.ref, TagReference) and tinfo.ref.commit == rtag.commit + assert tinfo.flags & tinfo.NEW_TAG # adjust tag commit + rtag.object = rhead.commit.parents[0].parents[0] + res = fetch_and_test(remote, tags=True) + tinfo = res[str(rtag)] + assert tinfo.commit == rtag.commit + assert tinfo.flags & tinfo.TAG_UPDATE + + # delete remote tag - local one will stay + TagReference.delete(remote_repo, rtag) + res = fetch_and_test(remote, tags=True) + self.failUnlessRaises(IndexError, get_info, res, remote, str(rtag)) - self.fail("tag handling, tag uptodate, new tag, new branch") def _test_pull(self,remote, rw_repo, remote_repo): # pull is essentially a fetch + merge, hence we just do a light |