On 5/24/2023 5:26 PM, Jonathan Tan wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: >> IOW, even if the version of Git is >> capable of writing and reading v2, it does not have to use v2, >> right? To put it the other way around, we will have to and can keep >> supporting data that is labeled as v1, no? > > I think this is the main point - whether we want to continue supporting > data labeled as v1. I personally think that we should migrate to v2 > as quickly as possible. But if the consensus is that we should support > both, at least for a few releases of Git, I'll go with that. I agree on migrating quickly as possible, within basic safety guidelines. Shipping a Git change that suddenly is unable to use on-disk data that it has previously relied upon is not a safe change. And that is the absolute minimum amount of safety required. The other side is to not make a Git change that suddenly changes the on-disk format without a switch to disable it. Think about it this way: if there was a bug in the code, could we safely roll it back? If we are immediately writing v2 filters after the deployment, then rolling it back will cause the previous version to not recognize those filters, leading to a delayed recovery. I'd be willing to modify my suggested steps: >>> 1. v2.42.0 includes writing v2 format, off by default. >>> 2. v2.43.0 writes v2 format by default. >>> 3. v2.44.0 no longer parses v1 format (ignored without error). to something simpler: 1. v2.42.0 writes v2 format by default, but can be disabled by config. 2. v2.43.0 no longer parses or writes v1 format. With this, we could proactively set the config value that disables the v2 format in our production environment, then slowly re-enable that config after the binaries have deployed. This allows us to limit the blast radius if something goes wrong, which is really important. Further, I'm describing an environment where we control all of the Git versions that are interacting with the repositories. Other environments don't have that luxury, such as typical client users. Even the three-version plan is an accelerated deprecation plan, based on previous examples in Git. Thanks, -Stolee