This is a replacement for my earlier one-off SHA-1->SHA-256 cleanup patch, on the basis of Jeff's comment that we should just be using fsck_tag(). I was pretty much ready to send this as a non-RFC, but as seen in 12/12 fully duplicating the mktag logic in the context of using fsck_tag() is a bit tricker than it looks. That breakage was only revealed by a test I added while writing this. The result is still nicer than the current code, but even then this series breaks the tests mid-way through (in "improve verify_object() test coverage"), but fixes them in 12/12. I ran out of time to make this more sensible, but wanted to send an RFC with the current state, and in case anyone else has any better ideas for how to deal with 12/12. This could be applied as a non-RFC by squashing 12/12 into the "use fsck instead of custom verify_tag" change. Ævar Arnfjörð Bjarmason (12): mktag: use default strbuf_read() hint mktag: reword write_object_file() error mktag: remove redundant braces in one-line body "if" mktag tests: don't needlessly use a subshell mktag tests: remove needless SHA-1 hardcoding mktag tests: improve verify_object() test coverage fsck: add new "extra" checks for "mktag" mktag: use fsck instead of custom verify_tag() mktag: remove now-unused verify_tag() code mktag doc: update to explain why to use this mktag docs: say <hash> not <sha1> mktag: bring back some of the verify_object() logic Documentation/git-hash-object.txt | 4 + Documentation/git-mktag.txt | 31 ++++- builtin/mktag.c | 207 ++++++++++-------------------- fsck.c | 32 ++++- fsck.h | 2 + t/t1006-cat-file.sh | 2 +- t/t3800-mktag.sh | 103 ++++++++++----- 7 files changed, 202 insertions(+), 179 deletions(-) -- 2.29.2.222.g5d2a92d10f8