# HG changeset patch # User Patrick Mezard # Date 1263847229 -3600 # Node ID 247110c633f754cda62cf1672105886fb903d5ab # Parent e37738d95b27742959b11f008ad712e309d0a67a maps: TagMap tags are non-empty strings diff --git a/hgsubversion/maps.py b/hgsubversion/maps.py --- a/hgsubversion/maps.py +++ b/hgsubversion/maps.py @@ -98,7 +98,10 @@ class AuthorMap(dict): class TagMap(dict): + """Map tags to converted node identifier. + tag names are non-empty strings. + """ VERSION = 2 @classmethod @@ -133,6 +136,8 @@ class TagMap(dict): tag = tag[:-1] if self.endrev is not None and revision > self.endrev: break + if not tag: + continue dict.__setitem__(self, tag, node.bin(hash)) f.close() @@ -148,14 +153,17 @@ class TagMap(dict): self[k] = v def __contains__(self, tag): - return dict.__contains__(self, tag) and dict.__getitem__(self, tag) != node.nullid + return (tag and dict.__contains__(self, tag) + and dict.__getitem__(self, tag) != node.nullid) def __getitem__(self, tag): - if tag in self: + if tag and tag in self: return dict.__getitem__(self, tag) raise KeyError() def __setitem__(self, tag, info): + if not tag: + raise hgutil.Abort('tag cannot be empty') hash, revision = info f = open(self.path, 'a') f.write('%s %s %s\n' % (node.hex(hash), revision, tag)) diff --git a/hgsubversion/svnmeta.py b/hgsubversion/svnmeta.py --- a/hgsubversion/svnmeta.py +++ b/hgsubversion/svnmeta.py @@ -300,7 +300,7 @@ class SVNMeta(object): src_tag = self.get_path_tag(src_path) if src_tag or src_file == '': ln = self.localname(p) - if src_tag and src_tag in self.tags: + if src_tag in self.tags: ci = self.repo[self.tags[src_tag]].extra()['convert_revision'] src_rev, src_branch, = self.parse_converted_revision(ci) return {ln: (src_branch, src_rev, revnum)} @@ -350,7 +350,7 @@ class SVNMeta(object): ''' tag = self.get_path_tag(self.remotename(branch)) limitedtags = maps.TagMap(self.repo, endrev=number-1) - if tag and tag in limitedtags: + if tag in limitedtags: ha = limitedtags[tag] return ha r, br = self.get_parent_svn_branch_and_rev(number, branch)