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") % |