Mercurial > hg
changeset 15809:884946c002b8
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.
author | Levi Bard <levi@unity3d.com> |
---|---|
date | Sun, 08 Jan 2012 17:06:34 +0100 |
parents | 62098aeb1e15 |
children | 3d11da212e30 |
files | hgext/largefiles/lfcommands.py |
diffstat | 1 files changed, 18 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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)