The root problem is that there is no backward compatibility - you can’t mix the two. Why is that is beyond me.
I read that whole article, and aside from an unsourced statement that GitHub et al will need “new and distinct servers” exactly zero of that seemed to support the thesis that a SHA-256 default was going to be “expensive”.
Submodules are not the preferred way to incorporate third-party code for any environment I know. And while web-exposed URLs for management tools like Jira or AzureDevOps will need to adapt before the new default can be used, doing so even with a wholesale re-hashing of every commit isn’t technically difficult.
What would be terrible and dangerous would be if git 3.0 entirely dropped SHA-1 support. But just as you’re free to keep on using “master” instead of “main”, i expect that extant projects will still be supported until a version after every major project has converted to SHA-256 or what have you.
Submodules are not the preferred way to incorporate third-party code for any environment I know. And while web-exposed URLs for management tools like Jira or AzureDevOps will need to adapt before the new default can be used, doing so even with a wholesale re-hashing of every commit isn’t technically difficult.
Well, like it or not, they are used. And not so rarely. Now, rehashing will probably work, but it will require every project to do that. If you use more than one submodule which is not under your control, you have again mixed hashes that you can’t fix easily.
Further reading that casts doubt on even submodules breaking:
It sounds like the new default is specifically to push GitHub et al to support SHA-256. Which they either will, or they will fork git and continue on with SHA-1 forever.
Where do you see that submodules won’t cause headaches?
The bit about “comparability”. Where do you see that they will? (I mean, aside from the original article that claimed it without evidence.)
A submodule is “just” a pointer to a specific commit in an external repo. It was at one point entirely done via shell scripts, and unless I missed an update is still obnoxiously slow compared to the rest of git.
I can’t fathom why the SHA-256 support for submodules would do more than just treat the SHA as a foreign key.and go from there. We’d potentially be in trouble if SHA-1 support is being removed, but I don’t see any reason why git would do something so stupid.
(I honestly can’t fathom why SHA-256 hashed commits couldn’t be the children of SHA-1 commits. A bunch of reasons why you may not WANT to, but that’s a separate concern that seems like it’d be outweighed by comparability.)
There’s apparently work going on to have on the fly translations between SHA-1 and SHA-256 as necessary



