Merge branch 'jk/log-decorate-optim'

Optimize "git log" for cases where we wasted cycles to load ref
decoration data that may not be needed.

* jk/log-decorate-optim:
  load_ref_decorations(): fix decoration with tags
  add_ref_decoration(): rename s/type/deco_type/
  load_ref_decorations(): avoid parsing non-tag objects
  object.h: add lookup_object_by_type() function
  object.h: expand docstring for lookup_unknown_object()
  log: avoid loading decorations for userformats that don't need it
  pretty.h: update and expand docstring for userformat_find_requirements()
This commit is contained in:
Junio C Hamano
2021-07-28 13:17:58 -07:00
8 changed files with 77 additions and 32 deletions

View File

@ -1915,6 +1915,20 @@ test_expect_success '--exclude-promisor-objects does not BUG-crash' '
test_must_fail git log --exclude-promisor-objects source-a
'
test_expect_success 'log --decorate includes all levels of tag annotated tags' '
git checkout -b branch &&
git commit --allow-empty -m "new commit" &&
git tag lightweight HEAD &&
git tag -m annotated annotated HEAD &&
git tag -m double-0 double-0 HEAD &&
git tag -m double-1 double-1 double-0 &&
cat >expect <<-\EOF &&
HEAD -> branch, tag: lightweight, tag: double-1, tag: double-0, tag: annotated
EOF
git log -1 --format="%D" >actual &&
test_cmp expect actual
'
test_expect_success 'log --end-of-options' '
git update-ref refs/heads/--source HEAD &&
git log --end-of-options --source >actual &&