Mercurial > hg
diff mercurial/tags.py @ 12758:2d754eae430c
tags: do not fail if tags.cache is corrupted (issue2444)
This file is not critical for hg, so we can safely
swallow the ValueError
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Tue, 19 Oct 2010 20:20:10 +0900 |
parents | b19067ee4507 |
children | d1245ce817a8 |
line wrap: on
line diff
--- a/mercurial/tags.py Sun Oct 10 09:50:25 2010 -0500 +++ b/mercurial/tags.py Tue Oct 19 20:20:10 2010 +0900 @@ -176,16 +176,23 @@ cacheheads = [] # list of headnode cachefnode = {} # map headnode to filenode if cachefile: - for line in cachelines: - if line == "\n": - break - line = line.rstrip().split() - cacherevs.append(int(line[0])) - headnode = bin(line[1]) - cacheheads.append(headnode) - if len(line) == 3: - fnode = bin(line[2]) - cachefnode[headnode] = fnode + try: + for line in cachelines: + if line == "\n": + break + line = line.rstrip().split() + cacherevs.append(int(line[0])) + headnode = bin(line[1]) + cacheheads.append(headnode) + if len(line) == 3: + fnode = bin(line[2]) + cachefnode[headnode] = fnode + except (ValueError, TypeError): + # corruption of tags.cache, just recompute it + ui.warn(_('.hg/tags.cache is corrupt, rebuilding it\n')) + cacheheads = [] + cacherevs = [] + cachefnode = {} tipnode = repo.changelog.tip() tiprev = len(repo.changelog) - 1