Re: [PATCH v3 01/17] Documentation/technical: add cruft-packs.txt
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 29, 2022, 15:59 UTC
- Message-ID
- <xmqqa6d8yckj.fsf@gitster.g>
- In-Reply-To
- <YkIm7lnQsUT0JnvS@nand.local>
Taylor Blau <me@ttaylorr.com> writes:
Show 20 quoted lines
> 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?
Show 14 quoted lines
>> 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.
Show 8 quoted lines
> 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?
Show 9 quoted lines
> 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 ;-)