On 2026-10-02 at 08:18:42, Scott Chacon wrote: > I'm concerned about the ecosystem impact of moving the `git init` default > hashing function to SHA-256 in 3.0. I have suggested that it may be more > feasible with similar benefits to add the ability to inject an independently > calculated and verifiable tree content sha into signed objects instead. I don't think this is a good idea. There are lots of reasons it's not, but the simplest one is that Git requires collision resistance because it is impossible to store two different colliding blobs. We don't have any such blobs yet, but I fully expect SHA-1 to become as weak as MD5, in which case there will be a large number of items that cannot be stored in a Git repository. Even if you don't want to store those blobs, there are many people, such as security researchers, who _do_ want to store those blobs and that requires a SHA-256 repository. Your approach does nothing to address that problem. Consequently, we need to make the problem better as soon as possible and that means moving away from SHA-1. TLS, OpenPGP, and other major ecosystems have already made this transition and we're very far behind the times. The Canadian government already recommends users to have moved away from SHA-1 and the U.S. government will no longer allow SHA-1 for any purpose as of 2030. I want to be clear that 4 years in the large business and government sector is nothing. I'll also add that the design we have is the design we've had for many years and there has been ample opportunity to propose alternative designs. The plan for Git 3.0 is around the March timeframe and making substantial changes now is far too late. Every major forge has support for SHA-256, whether publicly or in preview, and no forge has support for this design, nor do I anticipate it seeing a lot of traction, especially since we explicitly rejected the kind of half-transition you're proposing for security and other reasons. Git 3.0 and the requirement for SHA-256 were discussed at Git Merge 2024 in Berlin and discussion has happened on the list quite a bit since then, so it shouldn't be a surprise to anyone. The thing you really want is the interoperability work, which can automatically rewrite repositories from one hash algorithm to another during a clone or fetch operation. Yes, it isn't quite that simple for submodules, but if you recursively clone the repository and all its submodules, it should be possible to rewrite it in place, although that hasn't been written yet. That work has not yet been sent upstream because some of it was written at $DAYJOB, which requires that we use Outlook and we all know that Outlook corrupts patches. However, there is some intention for another company to handle the polishing and sending, so it should be available sooner or later. -- brian m. carlson (they/them) Toronto, Ontario, CA