Martin von Zweigbergk <martinvonz@google.com> [Sun, 07 Feb 2016 22:46:20 -0800] rev 28114
verify: use similar language for missing manifest and file revisions
When a changeset refers to a manifest revision that's not found in the
manifest log, we say "changeset refers to missing revision X", but
when a manifest refers to file revision that's not found in the
filelog, we say "X in manifests not found". The language used for
missing manifest revisions seems clearer, so let's use that for
missing filelog revisions too.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 02 Feb 2016 10:42:28 -0800] rev 28113
verify: include "manifest" prefix in a few more places
We include the "manifest" prefix on most other errors, so it seems
consistent to add them to the remaining messages too. Also, having the
"manifest" prefix will be more consistent with having the directory
prefix there when we add support for treemanifests. With the
"manifest" at the beginning, let's remove the now-redundant
"manifest" in the message itself.
Martin von Zweigbergk <martinvonz@google.com> [Tue, 02 Feb 2016 09:46:14 -0800] rev 28112
verify: drop unnecessary check for nullid
In
eb914541a950 (verify: filter messages about missing null manifests
(
issue2900), 2011-07-13), we started ignoring nullid in the list of
manifest nodeids to check. Then, in
b32a30da608d (verify: do not choke
on valid changelog without manifest, 2012-08-21), we stopped adding
nullid to the list to start with. So let's drop the left-over check
now.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 31 Jan 2016 00:10:56 -0800] rev 28111
verify: move cross-checking of changeset/manifest out of _crosscheckfiles()
Reasons:
* _crosscheckfiles(), as the name suggests, is about checking that
the set of files files mentioned in changesets match the set of
files mentioned in the manifests.
* The "checking" in _crosscheckfiles() looked rather strange, as it
just emitted an error for *every* entry in mflinkrevs. The reason
was that these were the entries remaining after the call to
_verifymanifest(). Moving all the processing of mflinkrevs into
_verifymanifest() makes it much clearer that it's the remaining
entries that are a problem.
Functional change: progress is no longer reported for "crosschecking"
of missing manifest entries. Since the crosschecking phase takes a
tiny fraction of the verification, I don't think this is a
problem. Also, any reports of "changeset refers to unknown manifest"
will now come before "crosschecking files in changesets and
manifests".
Martin von Zweigbergk <martinvonz@google.com> [Sun, 31 Jan 2016 21:55:52 -0800] rev 28110
tests: add tests for missing revlogs and revlog entries
The verify code is pretty poorly tested. It's easy to test missing
revlogs and missing revlog entries, so let's add tests for that.
Also add some more tests corrupting each type of revlog, so we test
the messages presented when reading a revision fails. The pure and
native implementations produce different error messages, so we have to
use (glob) in the tests.
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Feb 2016 14:50:10 -0800] rev 28109
hook: don't crash on syntax errors in python hooks
We had some real-world cases where syntax errors in Python hooks would crash
the whole process and leave it in an indeterminate state. Handle those better.
Siddharth Agarwal <sid0@fb.com> [Fri, 12 Feb 2016 11:44:35 -0800] rev 28108
hook: for python hook exceptions, add note to run with --traceback
Just like with ImportErrors, it isn't obvious that --traceback will produce
helpful debugging output here.