comparison mercurial/verify.py @ 3196:f3b939444c72

Abstract manifest block parsing.
author Brendan Cully <brendan@kublai.com>
date Fri, 29 Sep 2006 13:00:54 -0700
parents fdc232d8a193
children 0e68608bd11d
comparison
equal deleted inserted replaced
3195:705e30c0a230 3196:f3b939444c72
100 if p not in repo.manifest.nodemap: 100 if p not in repo.manifest.nodemap:
101 err(_("manifest %s has unknown parent %s") % 101 err(_("manifest %s has unknown parent %s") %
102 (short(n), short(p))) 102 (short(n), short(p)))
103 103
104 try: 104 try:
105 delta = mdiff.patchtext(repo.manifest.delta(n)) 105 for f, fn in repo.manifest.readdelta(n).iteritems():
106 filenodes.setdefault(f, {})[fn] = 1
106 except KeyboardInterrupt: 107 except KeyboardInterrupt:
107 repo.ui.warn(_("interrupted")) 108 repo.ui.warn(_("interrupted"))
108 raise 109 raise
109 except Exception, inst: 110 except Exception, inst:
110 err(_("unpacking manifest %s: %s") % (short(n), inst)) 111 err(_("reading delta for manifest %s: %s") % (short(n), inst))
111 continue 112 continue
112
113 try:
114 ff = [ l.split('\0') for l in delta.splitlines() ]
115 for f, fn in ff:
116 filenodes.setdefault(f, {})[bin(fn[:40])] = 1
117 except (ValueError, TypeError), inst:
118 err(_("broken delta in manifest %s: %s") % (short(n), inst))
119 113
120 repo.ui.status(_("crosschecking files in changesets and manifests\n")) 114 repo.ui.status(_("crosschecking files in changesets and manifests\n"))
121 115
122 for m, c in neededmanifests.items(): 116 for m, c in neededmanifests.items():
123 err(_("Changeset %s refers to unknown manifest %s") % 117 err(_("Changeset %s refers to unknown manifest %s") %