# HG changeset patch # User Edouard Gomez # Date 2012-03-14 00:13:45 # Node ID 589aab2ca716b60dc20731158cc5724113077ecb # Parent c655e4acaa82dbd1f044c2a142e21b7ffcec7eae convert: support non annotated tags in git backend Do not blindly filter out non ending ^{} tags. The new logic is: - if both "tag" and "tag^{}" exist, "tag^{}" is what we want - if only "tag" exists, "tag" is fine diff --git a/hgext/convert/git.py b/hgext/convert/git.py --- a/hgext/convert/git.py +++ b/hgext/convert/git.py @@ -143,20 +143,30 @@ class convert_git(converter_source): def gettags(self): tags = {} + alltags = {} fh = self.gitopen('git ls-remote --tags "%s"' % self.path) prefix = 'refs/tags/' + + # Build complete list of tags, both annotated and bare ones for line in fh: line = line.strip() - if not line.endswith("^{}"): - continue node, tag = line.split(None, 1) if not tag.startswith(prefix): continue - tag = tag[len(prefix):-3] - tags[tag] = node + alltags[tag[len(prefix):]] = node if fh.close(): raise util.Abort(_('cannot read tags from %s') % self.path) + # Filter out tag objects for annotated tag refs + for tag in alltags: + if tag.endswith('^{}'): + tags[tag[:-3]] = alltags[tag] + else: + if tag + '^{}' in alltags: + continue + else: + tags[tag] = alltags[tag] + return tags def getchangedfiles(self, version, i):