Skip to content

pr-1301/derrickstolee/decorations-v1

When running 'git log', the default is to report any refs within refs/* as
decorations. This series reduces the default set to be more specific to a
set of known-useful namespaces.

This was previously reduced by adding the log.excludeDecoration config
option and modifying that config in git maintenance's prefetch task (to hide
refs/prefetch/*). I then followed that pattern again for the bundle URI
feature [1], but this caught some reviewers by surprise as an unfortunate
side-effect. This series is a way to roll back the previous decision to use
log.excludeDecoration and instead use tighter filters by default.

[1]
https://lore.kernel.org/git/a217e9a0640b45d21ef971d6e91cee3f1993f383.1656535245.git.gitgitgadget@gmail.com/

As noted in the last patch, the current design ignores the new filters if
there are any previously-specified filters. This includes the
log.excludeDecorations=refs/prefetch/ set by the git maintenance command.
This means that users who ran that command in their repo will not get the
benefits of the more strict filters. While we stop writing
log.excludeDecorations, we don't remove existing instances of it.

I'm interested if anyone has another way around this issue, or if we
consider adding the default filter as long as no --decorate=refs options are
specified.

Thanks, -Stolee

Derrick Stolee (3):
  refs: allow "HEAD" as decoration filter
  log: add default decoration filter
  maintenance: stop writing log.excludeDecoration

 Documentation/git-log.txt |  7 ++++--
 builtin/gc.c              |  6 -----
 builtin/log.c             | 53 +++++++++++++++++++++++++++++----------
 refs.c                    |  4 +--
 t/t4202-log.sh            | 29 +++++++++++++++++++++
 t/t7900-maintenance.sh    | 21 ----------------
 6 files changed, 76 insertions(+), 44 deletions(-)

base-commit: 6a475b71f8c4ce708d69fdc9317aefbde3769e25

Submitted-As: https://lore.kernel.org/git/pull.1301.git.1658844250.gitgitgadget@gmail.com
Assets 2