This patch series implements an entirely alternate method of achieving
some of the same ends as the MIDX, using the approach suggested by
Jeff King from the RFC thread back in January[1]. You can now do:
core.abbrev = 20
core.validateAbbrev = false
Or:
core.abbrev = +2
core.validateAbbrev = false
On linux.git `git log --oneline --raw --parents` with 64MB packs gives
this improvement with core.abbrev=15 & core.validateAbbrev=false
(v.s. true):
Test HEAD~ HEAD
----------------------------------------------------------------------------------------
0014.1: git log --oneline --raw --parents 95.68(95.07+0.53)
42.74(42.33+0.39) -55.3%
While cleaning up the RFC version of this which I sent in [2] I
discovered that almost none of the existing functionality was tested
for, and was very inconsistent since we have 4 different places where
the abbrev config is parsed.
See 19/20 and 20/20 for what this whole thing is building towards, the
rest is all tests, cleanup, and preparatory work.
(There's still other long-standing issues with the existing behavior
which this doesn't change, but I had to stop somewhere to make this
digestible).
1. https://public-inbox.org/git/[email protected]/
2. https://public-inbox.org/git/[email protected]/
Ævar Arnfjörð Bjarmason (20):
t/README: clarify the description of test_line_count
test library: add a test_byte_count
blame doc: explicitly note how --abbrev=40 gives 39 chars
abbrev tests: add tests for core.abbrev and --abbrev
abbrev tests: test "git-blame" behavior
blame: fix a bug, core.abbrev should work like --abbrev
abbrev tests: test "git branch" behavior
abbrev tests: test for "git-describe" behavior
abbrev tests: test for "git-log" behavior
abbrev tests: test for "git-diff" behavior
abbrev tests: test for plumbing behavior
abbrev tests: test for --abbrev and core.abbrev=[+-]N
parse-options-cb.c: convert uses of 40 to GIT_SHA1_HEXSZ
config.c: use braces on multiple conditional arms
parse-options-cb.c: use braces on multiple conditional arms
abbrev: unify the handling of non-numeric values
abbrev: unify the handling of empty values
abbrev parsing: use braces on multiple conditional arms
abbrev: support relative abbrev values
abbrev: add a core.validateAbbrev setting
Documentation/config.txt | 49 +++
Documentation/diff-options.txt | 3 +
Documentation/git-blame.txt | 14 +
Documentation/git-branch.txt | 3 +
Documentation/git-describe.txt | 3 +
Documentation/git-ls-files.txt | 3 +
Documentation/git-ls-tree.txt | 3 +
Documentation/git-show-ref.txt | 3 +
builtin/blame.c | 2 +
cache.h | 2 +
config.c | 22 +-
diff.c | 24 +-
environment.c | 2 +
parse-options-cb.c | 19 +-
revision.c | 24 +-
sha1-name.c | 15 +
t/README | 6 +-
t/perf/p0014-abbrev.sh | 13 +
t/t0014-abbrev.sh | 452 ++++++++++++++++++++++++++++
t/t1512-rev-parse-disambiguation.sh | 47 +++
t/t6006-rev-list-format.sh | 6 +-
t/test-lib-functions.sh | 23 ++
22 files changed, 722 insertions(+), 16 deletions(-)
create mode 100755 t/perf/p0014-abbrev.sh
create mode 100755 t/t0014-abbrev.sh
--
2.17.0.290.gded63e768a