[PATCH 0/9] SHA-1/SHA-256 interoperability, part 1
This is the first of several series for SHA-1 and SHA-256 interoperability, all of which will hopefully land in Git 3.0.
The first set of commits here is documentation updates for documentation which was incorrect, missing, or simply wrong. I have spent more time than I'd like in the pack code and felt our documentation there could be more helpful. I also am correcting some things about the interoperability formats that I've found are not correct or efficient in terms of implementation and thus I will be implementing differently.
The loose object documentation will be updated with the loose object mapping in a future commit, but I felt I should send a basic loose object document first, so here it is.
The remaining commits are for expected gpgsig headers in tags, which causes some tests which use strict fsck to fail, as well as for prerequisites for compatibility hashes in the testsuite. Actually using this configuration is not possible since the tests are still very broken using it, but declaring these prerequisites allows me and others to send in patches that use them and thus make our testsuite more resilient.
For example, in interoperability mode we cannot write objects that are not valid since we cannot convert them into the other hash algorithm. Thus, when we're testing in a mode that has a compatibility algorithm, we skip these tests.
The goal is to run the tests in a full compatibility mode where everything is dual-hash as well as introduce some specific tests for interoperability that run in all configurations of the tests.
This series should be relatively boring and noncontroversial. The more substantive, interesting, and controversial patches (in that they contain Rust code) will require `ps/rust-balloon` to hit master and will follow as part 2. You need not clutch your pearls yet.
brian m. carlson (9): docs: update pack index v3 format docs: update offset order for pack index v3 docs: reflect actual double signature for tags docs: improve ambiguous areas of pack format documentation docs: add documentation for loose objects rev-parse: allow printing compatibility hash fsck: consider gpgsig headers expected in tags Allow specifying compatibility hash t: add a prerequisite for a compatibility hash
Documentation/fsck-msgids.adoc | 6 +++ Documentation/git-rev-parse.adoc | 11 ++-- Documentation/gitformat-loose.adoc | 49 +++++++++++++++++ Documentation/gitformat-pack.adoc | 18 +++++++ .../technical/hash-function-transition.adoc | 38 ++++++------- builtin/rev-parse.c | 11 +++- fsck.c | 18 +++++++ fsck.h | 2 + t/t1450-fsck.sh | 54 +++++++++++++++++++ t/t1500-rev-parse.sh | 34 ++++++++++++ t/test-lib-functions.sh | 9 +++- t/test-lib.sh | 13 +++++ 12 files changed, 236 insertions(+), 27 deletions(-) create mode 100644 Documentation/gitformat-loose.adoc