remote-hg: upgrade version 1 marks

As suggested by Jed Brown; there's no need to re-import all the commits. Cc: Jed Brown <jed@59a2.org> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Felipe Contreras committed May 24, 2013 at 21:29 UTC 68b161167841c43c138604429f9981cb453aff8a
1 file changed +18 -4
contrib/remote-helpers/git-remote-hg
+18 -4
@@ -103,14 +103,20 @@ def get_config_bool(config, default=False):
103
104 class Marks:
105
106 - def __init__(self, path):
106 + def __init__(self, path, repo):
107 self.path = path
108 + self.repo = repo
109 self.clear()
110 self.load()
111
112 if self.version < VERSION:
112 - self.clear()
113 - self.version = VERSION
113 + if self.version == 1:
114 + self.upgrade_one()
115 +
116 + # upgraded?
117 + if self.version < VERSION:
118 + self.clear()
119 + self.version = VERSION
120
121 def clear(self):
122 self.tips = {}
@@ -133,6 +139,14 @@ class Marks:
139 for rev, mark in self.marks.iteritems():
140 self.rev_marks[mark] = rev
141
142 + def upgrade_one(self):
143 + def get_id(rev):
144 + return hghex(self.repo.changelog.node(int(rev)))
145 + self.tips = dict((name, get_id(rev)) for name, rev in self.tips.iteritems())
146 + self.marks = dict((get_id(rev), mark) for rev, mark in self.marks.iteritems())
147 + self.rev_marks = dict((mark, get_id(rev)) for mark, rev in self.rev_marks.iteritems())
148 + self.version = 2
149 +
150 def dict(self):
151 return { 'tips': self.tips, 'marks': self.marks, 'last-mark' : self.last_mark, 'version' : self.version }
152
@@ -973,7 +987,7 @@ def main(args):
987 fix_path(alias, peer or repo, url)
988
989 marks_path = os.path.join(dirname, 'marks-hg')
976 - marks = Marks(marks_path)
990 + marks = Marks(marks_path, repo)
991
992 if sys.platform == 'win32':
993 import msvcrt