On Thu, Mar 12, 2020 at 6:51 PM Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > > Jonathan Tan wrote: > > Derrick Stolee wrote: > > >> but it appears that we rely on the "remote.<name>.promisor = true" > >> setting instead of this extension. > > > > Hmm...besides giving the name of the promisor remote, the > > extensions.partialClone setting is there to prevent old versions of Git > > (that do not know this extension) from manipulating the repo. That could be true of "remote.<name>.promisor = true". > Yes, so the lack of setting is a bug. > > Christian, what would your prefered way be to fix this? Should > extensions.partialclone specify a particular "default" promisor > remote, or should we use a new repository extension for multiple > promisors? My opinion has always been that "extensions.partialClone = <remote>" is a mistake as it is inherently making difficult to have many promisor remotes. It is also not clear what a default should be. Should it be the last promisor remote that is tried when all the others couldn't provide all the needed objects? Or should it be the first one that is tried? And what if the order should be different when pushing and when fetching? I think it is much clearer to have an order (that could be different when pushing and fetching) in which promisor remotes are tried. So I'd rather obsolete "extensions.partialClone = <remote>" and to find other ways. > [...] > > I cloned and indeed it is as Stolee describes. Git still works as > > expected if I remove "promisor = true" and add > > "[extensions]\npartialclone=origin", so at least extensions.partialClone > > is still supported, even if not written by default. Yeah, I didn't remove support for it. Maybe we could have "[extensions]\npartialclone=<bool>" though that feels messy, or maybe we could have another extension alltogether like "[extensions]\npromisorremotes=<bool>" and over time obsolete "extensions.partialClone" altogether. I prefer the later.