Taylor Blau <me@xxxxxxxxxxxx> writes: > I'm not sure... if we did: > > --- 8< --- > > diff --git a/setup.c b/setup.c > index 04ce33cdcd..fa54c9baa4 100644 > --- a/setup.c > +++ b/setup.c > @@ -565,2 +565,4 @@ static enum extension_result handle_extension(const char *var, > return EXTENSION_OK; > + } else if (!strcmp(ext, "cruftpacks")) { > + return EXTENSION_OK; > } > > --- >8 --- > > but nothing more, then a hypothetical `extensions.cruftPacks` could be > used to prevent older writers in a mixed version environment. But if you > don't have or care about older versions of Git, you can avoid setting it > altogether. Smells like "unsafe by default, but you can opt into safety", which is backwards, isn't it? >> I do not quite see how it helps. After hearing "... will lose >> information about the mtimes ...", what concrete action can a user >> take? Or a sys-admin? >> >> It's not like use of cruft-pack is mandatory when you upgrade the >> new version of Git, right? Perhaps use of cruft-pack should be >> guarded behind a configuration variable so that users who might want >> to use mixed versions of Git will be protected against accidental >> use of new version of Git that introduces the forever-renewing >> untracked objects problem? > > I don't think we would have much to offer a user in that case; if the > mtimes are gone, then I couldn't think of anything to bring them back > outside of setting them manually. Yes, so rambling about losing mtimes in documentation or release notes would not help users all that much. Let's not do that. > But cruft packs are already guarded in two places: > > - `git repack` won't write a cruft pack unless given the `--cruft` > flag (i.e., `git repack -A` doesn't suddenly start generating cruft > packs upon upgrade). > > - `git gc` won't write cruft packs unless the `gc.cruftPacks` > configuration is set, or `--cruft` is given as a flag. Hmph, OK. So individuals can sort-of protect from hurting themselves by refraining from running these with --cruft or writing --cruft in their maintenance scripts. An organization that wants to let the more adventurous types to early opt-in can prepare two versions of the maintenance scripts they distribute to their users, one with and the other without --cruft, and use the mechanism they use for gradual rollouts to control the population. Perhaps that would make sufficient protection? I dunno. Jonathan, what do you think? > I'd be curious what Jonathan and others think of that approach (which, > to be clear, is what this series already implements). We could make it > clear to say: > > If you have mixed versions of Git which both repack a repository > (either manually or by auto-GC / background maintenance), consider > leaving `gc.cruftPacks` unset and avoiding passing `--cruft` as a > command-line argument to `git repack` and `git gc`, since doing so > can lead to [...] That message is (depending on what comes in [...]) much more helpful than just throwing a word "mtime" out and letting the reader figure out the rest ;-)