Our breaking changes document outlines that Git 3.0 will make SHA-256 the default hash algorithm, which is a sensible and prudent approach, especially from a security perspective. However, we haven't tested this adequately and it would be helpful to allow users to test this behaviour so their code and environments are ready for it. Fortunately, c5bc9a7f94 (Makefile: wire up build option for deprecated features, 2025-01-22) introduces a build option that we can use for testing breaking changes: WITH_BREAKING_CHANGES. This series introduces functionality for SHA-256 by default in this mode so we can test it out. Changes since v1: * Add a build option for the default hash and use it in the tests. * Rename GIT_HASH_ORIGINAL to GIT_HASH_SHA1_LEGACY. * Improve some of the commit messages to better explain questions that have come up for review. * Improve formatting of nested C preprocessor directives. brian m. carlson (11): hash: add a constant for the default hash algorithm hash: add a constant for the legacy hash algorithm builtin: use default hash when outside a repository Use legacy hash for legacy formats setup: use the default algorithm to initialize repo format t: default to compile-time default hash if not set t1007: choose the built-in hash outside of a repo t4042: choose the built-in hash outside of a repo t5300: choose the built-in hash outside of a repo help: add a build option for default hash Enable SHA-256 by default in breaking changes mode builtin/apply.c | 2 +- builtin/diff.c | 2 +- builtin/hash-object.c | 2 +- builtin/index-pack.c | 2 +- builtin/ls-remote.c | 2 +- builtin/patch-id.c | 2 +- builtin/receive-pack.c | 2 +- builtin/shortlog.c | 2 +- builtin/show-index.c | 2 +- bundle.c | 4 ++-- connect.c | 6 +++--- fetch-pack.c | 2 +- hash.h | 10 ++++++++++ help.c | 1 + pkt-line.c | 2 +- remote-curl.c | 2 +- serve.c | 2 +- setup.c | 9 ++++++--- setup.h | 2 +- t/t1007-hash-object.sh | 4 ++-- t/t4042-diff-textconv-caching.sh | 12 ++++++++++-- t/t5300-pack-object.sh | 6 +++--- t/test-lib-functions.sh | 5 ++++- t/test-lib.sh | 7 ++++++- transport.c | 2 +- 25 files changed, 62 insertions(+), 32 deletions(-)