largefiles: add error checking to tags conversion (issue3092)
authorLevi Bard <levi@unity3d.com>
Sun, 08 Jan 2012 17:06:34 +0100
changeset 15809 884946c002b8
parent 15808 62098aeb1e15
child 15810 3d11da212e30
largefiles: add error checking to tags conversion (issue3092) Check for errors when parsing .hgtags during lfconvert, and skip lines that don't parse or refer to invalid changesets.
hgext/largefiles/lfcommands.py
--- a/hgext/largefiles/lfcommands.py	Sun Jan 08 17:03:39 2012 +0100
+++ b/hgext/largefiles/lfcommands.py	Sun Jan 08 17:06:34 2012 +0100
@@ -295,9 +295,24 @@
             if f == '.hgtags':
                 newdata = []
                 for line in data.splitlines():
-                    id, name = line.split(' ', 1)
-                    newdata.append('%s %s\n' % (node.hex(revmap[node.bin(id)]),
-                        name))
+                    try:
+                        id, name = line.split(' ', 1)
+                    except ValueError:
+                        repo.ui.warn(_('skipping incorrectly formatted tag %s\n'
+                            % line))
+                        continue
+                    try:
+                        newid = node.bin(id)
+                    except TypeError:
+                        repo.ui.warn(_('skipping incorrectly formatted id %s\n'
+                            % id))
+                        continue
+                    try:
+                        newdata.append('%s %s\n' % (node.hex(revmap[newid]),
+                            name))
+                    except KeyError:
+                        repo.ui.warn(_('no mapping for id %s\n' % id))
+                        continue
                 data = ''.join(newdata)
             return context.memfilectx(f, data, 'l' in fctx.flags(),
                                       'x' in fctx.flags(), renamed)