When reading an object fails even though it exists, the sources know best what exactly went wrong and where the corrupt object is located. This information is lost though when bubbling up the error to the object database layer, which forces that layer to reconstruct it after the fact. This is exactly what `do_oid_object_info_extended()` does via `has_packed_and_bad()`, but that function only really knows to handle the "files" backend by reaching into its internals. Introduce a new `errmsg` parameter for the `read_object_info()` callback that sources are expected to populate with a human-readable message in case reading the object has failed. Adapt the packed and loose sources to populate the buffer with the messages that we ultimately want to surface to the user. For now, all callers are adapted to pass a `NULL` pointer. We will add a user of this new infrastructure in a subsequent commit. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com> |
||
|---|---|---|
| .. | ||
| clar | ||
| .gitignore | ||
| generate-clar-decls.sh | ||
| generate-clar-suites.sh | ||
| lib-oid.c | ||
| lib-oid.h | ||
| lib-reftable.c | ||
| lib-reftable.h | ||
| test-lib.c | ||
| test-lib.h | ||
| u-ctype.c | ||
| u-dir.c | ||
| u-example-decorate.c | ||
| u-hash.c | ||
| u-hashmap.c | ||
| u-list-objects-filter-options.c | ||
| u-mem-pool.c | ||
| u-odb-inmemory.c | ||
| u-oid-array.c | ||
| u-oidmap.c | ||
| u-oidtree.c | ||
| u-prio-queue.c | ||
| u-reftable-basics.c | ||
| u-reftable-block.c | ||
| u-reftable-merged.c | ||
| u-reftable-pq.c | ||
| u-reftable-readwrite.c | ||
| u-reftable-record.c | ||
| u-reftable-stack.c | ||
| u-reftable-table.c | ||
| u-reftable-tree.c | ||
| u-strbuf.c | ||
| u-strcmp-offset.c | ||
| u-string-list.c | ||
| u-strvec.c | ||
| u-trailer.c | ||
| u-urlmatch-normalization.c | ||
| u-utf8-width.c | ||
| unit-test.c | ||
| unit-test.h | ||