Mercurial > hg > hg-git
changeset 827:7c1452551db1
git_handler.filter_min_date: support tag times for annotated tags
Previously we'd crash on annotated tags because they don't have a 'tag_time'
property.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 04 Nov 2014 13:56:00 -0800 (2014-11-04) |
parents | 7bf50671a5bd |
children | fc63d0e2653d |
files | hggit/git_handler.py tests/test-pull.t |
diffstat | 2 files changed, 52 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hggit/git_handler.py +++ b/hggit/git_handler.py @@ -1093,8 +1093,13 @@ # filter refs older than min_timestamp min_timestamp, min_offset = hgutil.parsedate(min_date) + def check_min_time(obj): + if isinstance(obj, Tag): + return obj.tag_time >= min_timestamp + else: + return obj.commit_time >= min_timestamp return util.OrderedDict((ref, sha) for ref, sha in refs.iteritems() - if self.git[sha].commit_time >= min_timestamp) + if check_min_time(self.git[sha])) def update_references(self): exportable = self.get_exportable()
--- a/tests/test-pull.t +++ b/tests/test-pull.t @@ -270,6 +270,15 @@ $ GIT_AUTHOR_DATE="2014-03-01 00:00:00 +0000" \ > GIT_COMMITTER_DATE="2009-01-01 00:00:00 +0000" \ > git commit -m oldcommit > /dev/null || echo "git commit error" +also add an annotated tag + $ git checkout -q master^ + $ echo oldtag > oldtag + $ git add oldtag + $ GIT_AUTHOR_DATE="2014-03-01 00:00:00 +0000" \ + > GIT_COMMITTER_DATE="2009-01-01 00:00:00 +0000" \ + > git commit -m oldtag > /dev/null || echo "git commit error" + $ GIT_COMMITTER_DATE="2009-02-01 00:00:00 +0000" \ + > git tag -a -m 'tagging oldtag' oldtag $ cd .. $ hg -R hgrepo pull pulling from $TESTTMP/gitrepo @@ -285,18 +294,22 @@ $ cd gitrepo + $ git checkout -q master $ echo newcommit > newcommit $ git add newcommit $ GIT_AUTHOR_DATE="2014-01-01 00:00:00 +0000" \ > GIT_COMMITTER_DATE="2014-01-02 00:00:00 +0000" \ > git commit -m newcommit > /dev/null || echo "git commit error" + $ git checkout -q refs/tags/oldtag + $ GIT_COMMITTER_DATE="2014-01-02 00:00:00 +0000" \ + > git tag -a -m 'tagging newtag' newtag $ cd .. $ hg -R hgrepo pull pulling from $TESTTMP/gitrepo importing git objects into hg (run 'hg heads .' to see heads, 'hg merge' to merge) - $ hg -R hgrepo log -r master - changeset: 8:c7d0cf1a7601 + $ hg -R hgrepo heads + changeset: 9:c7d0cf1a7601 bookmark: master tag: default/master tag: tip @@ -304,3 +317,34 @@ date: Wed Jan 01 00:00:00 2014 +0000 summary: newcommit + changeset: 7:d416c428c92d + tag: newtag + tag: oldtag + parent: 4:892d20308ddf + user: test <test@example.org> + date: Sat Mar 01 00:00:00 2014 +0000 + summary: oldtag + + changeset: 6:bdc34645137e + bookmark: releases/v2 + tag: default/releases/v2 + parent: 4:892d20308ddf + user: test <test@example.org> + date: Mon Jan 01 00:00:15 2007 +0000 + summary: add eta + + changeset: 5:3e35a45c61f9 + bookmark: releases/v1 + tag: default/releases/v1 + user: test <test@example.org> + date: Mon Jan 01 00:00:14 2007 +0000 + summary: add zeta + + changeset: 2:4d41070bf840 + bookmark: delta + tag: default/delta + parent: 0:3442585be8a6 + user: test <test@example.org> + date: Mon Jan 01 00:00:12 2007 +0000 + summary: add delta +