On Fri, Feb 24, 2017 at 05:00:55PM -0800, David Lang wrote: > On Fri, 24 Feb 2017, Jeff King wrote: > > > > > So I'd much rather see strong rules like: > > > > 1. Once a repo has flag-day switched over to the new hash format[1], > > new references are _always_ done with the new hash. Even ones that > > point to pre-flag-day objects! > > how do you define when a repo has "switched over" to the new format in a > distributed environment? You don't. It's a decision for each local repo, but the rules push everybody towards upgrading (because you forbid them pulling from or pushing to people who have upgraded). So in practice, some centralized distribution point switches, and then it floods out from there. > so you have one person working on a project that switches their version of > git to the new one that uses the new format. That shouldn't happen when they switch. It should happen when they decide to move their local clone to the new format. So let's assume they upgrade _and_ decide to switch. > But other people they interact with still use older versions of git Those people get forced to upgrade if they want to continue interacting. > what happens when you have someone working on two different projects where > one has switched and the other hasn't? See above. You only flip the flag on for one of the projects. > what if they are forks of each other? (LEDE and OpenWRT, or just > linux-kernel and linux-kernel-stable) Once one flips, the other one needs to flip to, or can't interact with them. I know that's harsh, and is likely to create headaches. But in the long run, I think once everything has converged the resulting system is less insane. For that reason I _wouldn't_ recommend projects like the kernel flip the flag immediately. Ideally we write the code and the new versions permeate the community. Then somebody (per-project) decides that it's time for the community to start switching. > > The flag-day switch would probably be a repo config flag based on > > repositoryformatversion (so old versions would just punt if they > > see it). Let's call this flag "newhash" for lack of a better term. > > so how do you interact with someone who only expects the old commit instead > of the commit-v2? You ask them to upgrade. -Peff