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