[PATCH 0/5] some "log --decorate" optimizations
- From
Jeff King <peff@peff.net>
- Date
- Jun 22, 2021, 16:03 UTC
- Message-ID
- <YNIJw/8p0F3cPfzd@coredump.intra.peff.net>
I was recently pointed to a repository where:
git log --format="%H %P" old..new
was abysmally slow, even though old..new only had a few commits, because load_ref_decorations() takes a long time (and kicks in due to the auto-decorate behavior). Leaving aside that "rev-list" would probably be a better tool here, it seems there's some low-hanging fruit:
- a user-format that doesn't show decorations doesn't need to load
them (fixed in patch 2 below) - we're pretty eager to parse the objects at the tip of each ref
(fixed in patch 5 below)The other commits are just cleanups and preparatory refactors.
[1/5]: pretty.h: update and expand docstring for userformat_find_requirements() [2/5]: log: avoid loading decorations for userformats that don't need it [3/5]: object.h: expand docstring for lookup_unknown_object() [4/5]: object.h: add lookup_object_by_type() function [5/5]: load_ref_decorations(): avoid parsing non-tag objects
builtin/log.c | 3 +++ log-tree.c | 6 ++++-- object.c | 18 ++++++++++++++++++ object.h | 20 +++++++++++++++++++- pretty.c | 4 ++++ pretty.h | 8 ++++++-- reachable.c | 18 ------------------ 7 files changed, 54 insertions(+), 23 deletions(-)
-Peff