On Mon, May 29, 2017 at 01:20:02PM +0200, Ævar Arnfjörð Bjarmason wrote: > >> * Add a new config variable `core.version`. E.g. `core.version = > >> 2.14.0` With this the user can specify that they'd like > >> new/experimental features introduced in that version (and below), > >> as well as immediately getting new deprecations added in that > >> version as errors. > > > > We have extensions.* for this purpose (or close to this purpose). I > > From reading repository-version.txt it seems unrelated to what I'd > like to do. I.e. there you'd like to introduce a hard breakage and > it's already documented that if you encounter some extensions.* keys > you don't understand you *must not* proceed. > > Whereas for this you'd like to e.g. turn on some experimental feature > in 2.16, but if you're running a 2.14 git you'd like it to just ignore > that config key it doesn't know about instead of git breaking. Right. repostoryformatversion (and extensions) is about the on-disk format of a repo. If I understand correctly, this is about the user specifying their preferred behaviors. Which is totally orthogonal. The former must be set in the repo-level .git/config, and would generally be set by Git itself when it writes a repo using that feature (e.g., upcoming ref backends). But this new thing would likely be set in the ~/.gitconfig explicitly by the user, when they want to change the behavior profile. For that reason, I'd suggest using a name that is a little different from "core.version", since it's easily missed up with "core.repositoryformatversion". But that's a minor detail. -Peff