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

Re: [PATCH 5/5] commit-graph: prepare commit graph

From
Taylor Blau <ttaylorr@github.com>
Date
Feb 1, 2021, 18:25 UTC
Message-ID
<YBhHaW7JpiYeNQIp@nand.local>
In-Reply-To
<dddeec30ebfc6d8403cc10395a9d0c331d1f7ad3.1612199707.git.gitgitgadget@gmail.com>
On Mon, Feb 01, 2021 at 05:15:07PM +0000, Derrick Stolee via GitGitGadget wrote:
Show 9 quoted lines
> From: Derrick Stolee <dstolee@microsoft.com>
>
> Before checking if the repository has a commit-graph loaded, be sure
> to run prepare_commit_graph(). This is necessary because without this
> instance we would not initialize the topo_levels slab for each of the
> struct commit_graphs in the chain before we start to parse the
> commits. This leads to possibly recomputing the topological levels for
> commits in lower layers even when we are adding a small number of
> commits on top.
I think that the situation arises as follows:
  - Prior to this patch, we didn't always prepare the commit-graph, so
    the topo_levels slab wasn't initialized either.
  - Then we try and compute the topo levels for new commits (which are
    likely to be decendants of older ones that are in commit-graphs and
    have their topo-levels already computed).
  - But in the course of computing topo-levels for the new commits, we
    have to recur on their ancestors, which *look* like they have
    uncomputed topo levels.

That all makes sense, but it may be worth cutting and pasting what I wrote into your patch to make it clearer.

> By properly initializing the topo_slab, we fix the previously broken
> case of a split commit graph where a base layer has the
> generation_data_overflow chunk.
Makes sense.
Show 5 quoted lines
> -test_expect_failure 'lower layers have overflow chunk' '
> +test_expect_success 'lower layers have overflow chunk' '
>  	cd "$TRASH_DIRECTORY/full" &&
>  	UNIX_EPOCH_ZERO="@0 +0000" &&
>  	FUTURE_DATE="@2147483646 +0000" &&
Terrific :-).

Thanks, Taylor

Previous: Derrick Stolee via GitGitGadgetNext: Derrick Stolee via GitGitGadget
Message 12 of 37 in “Generation Number v2: Fix a tricky split graph bug”
  1. 0/5 Generation Number v2: Fix a tricky split graph bugDerrick Stolee via GitGitGadget, Feb 1, 2021
  2. 1/5 commit-graph: use repo_parse_commitDerrick Stolee via GitGitGadget, Feb 1, 2021
  3. Taylor BlauFeb 1, 2021
  4. 3/5 commit-graph: validate layers for generation dataDerrick Stolee via GitGitGadget, Feb 1, 2021
  5. Taylor BlauFeb 1, 2021
  6. Derrick StoleeFeb 1, 2021
  7. 4/5 commit-graph: be extra careful about mixed generationsDerrick Stolee via GitGitGadget, Feb 1, 2021
  8. Taylor BlauFeb 1, 2021
  9. Derrick StoleeFeb 1, 2021
  10. Junio C HamanoFeb 1, 2021
  11. 5/5 commit-graph: prepare commit graphDerrick Stolee via GitGitGadget, Feb 1, 2021
  12. Taylor BlauFeb 1, 2021
  13. 2/5 commit-graph: always parse before commit_graph_data_at()Derrick Stolee via GitGitGadget, Feb 1, 2021
  14. Junio C HamanoFeb 1, 2021
  15. 0/6 Generation Number v2: Fix a tricky split graph bugDerrick Stolee via GitGitGadget, Feb 2, 2021
  16. 1/6 commit-graph: use repo_parse_commitDerrick Stolee via GitGitGadget, Feb 2, 2021
  17. 3/6 commit-graph: validate layers for generation dataDerrick Stolee via GitGitGadget, Feb 2, 2021
  18. 2/6 commit-graph: always parse before commit_graph_data_at()Derrick Stolee via GitGitGadget, Feb 2, 2021
  19. Jonathan NiederFeb 3, 2021
  20. Derrick StoleeFeb 3, 2021
  21. Jonathan NiederFeb 3, 2021
  22. Derrick StoleeFeb 3, 2021
  23. Taylor BlauFeb 3, 2021
  24. Eric SunshineFeb 3, 2021
  25. Junio C HamanoFeb 3, 2021
  26. Taylor BlauFeb 3, 2021
  27. Junio C HamanoFeb 3, 2021
  28. Derrick StoleeFeb 3, 2021
  29. SZEDER GáborFeb 7, 2021
  30. Junio C HamanoFeb 7, 2021
  31. Derrick StoleeFeb 8, 2021
  32. Junio C HamanoFeb 8, 2021
  33. 4/6 commit-graph: compute generations separatelyDerrick Stolee via GitGitGadget, Feb 2, 2021
  34. 6/6 commit-graph: prepare commit graphDerrick Stolee via GitGitGadget, Feb 2, 2021
  35. 5/6 commit-graph: be extra careful about mixed generationsDerrick Stolee via GitGitGadget, Feb 2, 2021
  36. Taylor BlauFeb 2, 2021
  37. Abhishek KumarFeb 11, 2021

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.