remote-hg: add version checks to the marks
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
c43c06b1869c40e2a95a23f6b87dc38861e9d776
1 file changed
+13
-3
contrib/remote-helpers/git-remote-hg
+13
-3
@@ -55,6 +55,8 @@ EMAIL_RE = re.compile('^([^<>]+[^ \\\t<>])?\\b(?:[ \\t<>]*?)\\b([^ \\t<>]+@[^ \\
55
AUTHOR_HG_RE = re.compile('^(.*?) ?<(.*?)(?:>(.+)?)?$')
56
RAW_AUTHOR_RE = re.compile('^(\w+) (?:(.+)? )?<(.*)> (\d+) ([+-]\d+)')
57
58
+VERSION = 1
59
+
60
def die(msg, *args):
61
sys.stderr.write('ERROR: %s\n' % (msg % args))
62
sys.exit(1)
@@ -103,12 +105,19 @@ class Marks:
105
106
def __init__(self, path):
107
self.path = path
108
+ self.clear()
109
+ self.load()
110
+
111
+ if self.version < VERSION:
112
+ self.clear()
113
+ self.version = VERSION
114
+
115
+ def clear(self):
116
self.tips = {}
117
self.marks = {}
118
self.rev_marks = {}
119
self.last_mark = 0
110
-
111
- self.load()
120
+ self.version = 0
121
122
def load(self):
123
if not os.path.exists(self.path):
@@ -119,12 +128,13 @@ class Marks:
128
self.tips = tmp['tips']
129
self.marks = tmp['marks']
130
self.last_mark = tmp['last-mark']
131
+ self.version = tmp.get('version', 1)
132
133
for rev, mark in self.marks.iteritems():
134
self.rev_marks[mark] = int(rev)
135
136
def dict(self):
127
- return { 'tips': self.tips, 'marks': self.marks, 'last-mark' : self.last_mark }
137
+ return { 'tips': self.tips, 'marks': self.marks, 'last-mark' : self.last_mark, 'version' : self.version }
138
139
def store(self):
140
json.dump(self.dict(), open(self.path, 'w'))