Re: [PATCH v2 1/2] maintenance: set log.excludeDecoration durin prefetch
From: Junio C Hamano <hidden>
Date: 2021-01-21 03:46:51
"Derrick Stolee via GitGitGadget" [off-list ref] writes:
From: Derrick Stolee <redacted> The 'prefetch' task fetches refs from all remotes and places them in the refs/prefetch/<remote>/ refspace. As this task is intended to run in the background, this allows users to keep their local data very close to the remote servers' data while not updating the users' understanding of the remote refs in refs/remotes/<remote>/. However, this can clutter 'git log' decorations with copies of the refs with the full name 'refs/prefetch/<remote>/<branch>'. The log.excludeDecoration config option was added in a6be5e67 (log: add log.excludeDecoration config option, 2020-05-16) for exactly this purpose. Ensure we set this only for users that would benefit from it by assigning it at the beginning of the prefetch task. Other alternatives would be during 'git maintenance register' or 'git maintenance start', but those might assign the config even when the prefetch task is disabled by existing config. Further, users could run 'git maintenance run --task=prefetch' using their own scripting or scheduling. This provides the best coverage to automatically update the config when valuable.
OK. I think those users who keep distance from "git maintenance" are different story but all others cannot be using refs/prefetch/ hierarchy for purposes other than "git maintenance" dictates, so "git maintenance [register|start]", or even when the user first runs "git maintenance" for that matter, would be acceptable point to add the configuration, but at the beginning of a prefetch task, we know the hierarchy is being used for what "git maintenance" wants to do, so it is a good place to do so. But playing devil's advocate, I do not think throwing refs/prefetch into a "hardcoded list of hierarchies that would never be used for decoration purposes" would upset any end-users in practice. The only reason why I do not make such a suggestion is it is more work (such a hardcoded reject list does not exist, if I recall correctly).
It is improbable, but possible, that users might want to run the prefetch task _and_ see these refs in their log decorations. This seems incredibly unlikely to me, but users can always opt-in on a command-by-command basis using --decorate-refs=refs/prefetch/.
It is not a viable workaround to add "--decorate-refs=refs/prefetch" that is a mouthful; configuration options are to reduce such typing, not to force more of them. But because I agree with that "incredibly unlikely" assessment, I do not care. Thanks.