Skip to content

Use commit-graph by default

Derrick Stolee via GitGitGadget git 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest3 patches 5 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3t6501: use --quiet when testing gc stderrt/t6501-freshen-objects.sh+3 -33 replies
2/3t: explicitly turn off core.commitGraph as neededt/t0410-partial-clone.sh t/t5307-pack-missing-commit.sh t/t6011-rev-list-with-bad-commit.sh +1 more+8 -40 replies
3/3commit-graph: Use commit-graph by defaultDocumentation/config.txt builtin/gc.c commit-graph.c+6 -60 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/3] Use commit-graph by default

The commit-graph feature is starting to stabilize. Based on what is in master right now, we have:

Git 2.18:

* Ability to write commit-graph (requires user interaction).

* Commit parsing is faster when commit-graph exists.

* Must have core.commitGraph true to use.

Git 2.19:

* Ability to write commit-graph on GC with gc.writeCommitGraph.

* Generation numbers written in commit-graph

* A few reachability algorithms make use of generation numbers.

(queued for) master:

* The test suite passes with GIT_TEST_COMMIT_GRAPH=1

* 'git commit-graph write' has progress indicators.

* The commit-graph is automatically disabled when grafts or replace-objects exist.

There are some other things coming that are in review (like 'git log --graph' speedups), but it is probably time to consider enabling the commit-graph by default. This series does that.

For timing, I'm happy to leave this queued for a merge after the Git 2.20 release. There are enough things in master to justify not enabling this by default until that goes out and more people use it.

PATCH 3/3 is rather simple, and is the obvious thing to do to achieve enabling these config values by default.

PATCH 1/3 is a required change to make the test suite work with this change. This change isn't needed with GIT_TEST_COMMIT_GRAPH=1 because the commit-graph is up-to-date for these 'git gc' calls, so no progress is output.

PATCH 2/3 is also a necessary evil, since we already had to disable GIT_TEST_COMMIT_GRAPH for some tests, we now also need to turn off core.commitGraph.

Thanks, -Stolee

Derrick Stolee (3):
t6501: use --quiet when testing gc stderr
t: explicitly turn off core.commitGraph as needed
commit-graph: Use commit-graph by default

 Documentation/config.txt            | 4 ++--
 builtin/gc.c                        | 2 +-
 commit-graph.c                      | 6 +++---
 t/t0410-partial-clone.sh            | 3 ++-
 t/t5307-pack-missing-commit.sh      | 3 ++-
 t/t6011-rev-list-with-bad-commit.sh | 3 ++-
 t/t6024-recursive-merge.sh          | 3 ++-
 t/t6501-freshen-objects.sh          | 6 +++---
 8 files changed, 17 insertions(+), 13 deletions(-)

base-commit: a4b8ab5363a32f283a61ef3a962853556d136c0e
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-50%2Fderrickstolee%2Fcommit-graph-default-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-50/derrickstolee/commit-graph-default-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/50

Signature · 1 line
gitgitgadget