git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 17, 2018, 20:33 UTC
Message-ID
<pull.50.git.gitgitgadget@gmail.com>

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
-- 
gitgitgadget
Next: Derrick Stolee via GitGitGadget
Message 1 of 9 in “Use commit-graph by default”
  1. 0/3 Use commit-graph by defaultDerrick Stolee via GitGitGadget, Oct 17, 2018
  2. 1/3 t6501: use --quiet when testing gc stderrDerrick Stolee via GitGitGadget, Oct 17, 2018
  3. Junio C HamanoOct 18, 2018
  4. Derrick StoleeOct 18, 2018
  5. Junio C HamanoOct 19, 2018
  6. 2/3 t: explicitly turn off core.commitGraph as neededDerrick Stolee via GitGitGadget, Oct 17, 2018
  7. 3/3 commit-graph: Use commit-graph by defaultDerrick Stolee via GitGitGadget, Oct 17, 2018
  8. Junio C HamanoOct 18, 2018
  9. Derrick StoleeOct 18, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.