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

Re: 2.29.0.rc0.windows.1: Duplicate commit id error message when fetching

From
Taylor Blau <me@ttaylorr.com>
Date
Oct 9, 2020, 18:28 UTC
Message-ID
<20201009182833.GA437455@nand.local>
In-Reply-To
<20201009175506.GA957408@coredump.intra.peff.net>
On Fri, Oct 09, 2020 at 01:55:06PM -0400, Jeff King wrote:
Show 31 quoted lines
> On Fri, Oct 09, 2020 at 01:46:07PM -0400, Derrick Stolee wrote:
>
> > > Can you reproduce it if you do
> > >
> > > git config core.commitGraph false
> > > git config fetch.writeCommitGraph true
> > > ?
> >
> > I _can_ repro it in this case! I think there must be something
> > very interesting going on where the commit-graph is parsed in
> > _some_ places, but not in others. This is something that I can
> > really start to dig into.
>
> Here's a much more minimal reproduction:
>
>   git init repo
>   cd repo
>
>   git commit --allow-empty -m one
>   git rev-parse HEAD |
>   git -c core.commitGraph=false \
>       commit-graph write --split=no-merge --stdin-commits
>   git rev-parse HEAD |
>   git -c core.commitGraph=false \
>       commit-graph write --split=no-merge --stdin-commits
>
>   git commit --allow-empty -m two
>   git rev-parse HEAD |
>   git commit-graph write --split --stdin-commits
>
> The final write will die() with the "unexpected duplicate" message.

Makes sense; the second commit-graph write won't know that 'one' is already in the graph because 'core.commitGraph' prevents 'prepare_commit_graph()' from actually loading the graph (actually loading the graph would be enough to stop the second write from occurring at all.)

I'm of two minds about what we could be doing here:
  - On the one hand we could be ignoring `core.commitGraph` setting
    during commit-graph writes and forcibly loading the commit-graph
    anyway.
  - But on the other hand, writing a commit graph with `core.commitGraph` set
    to false makes no sense. So, I'd almost rather have us die()
    immediately if core.commitGraph is set to false.

I think I'd advocate for the latter, along with Stolee's patch to not die in the case of duplicate commits in multiple layers of the graph.

> -Peff

Thanks, Taylor

Previous: Jeff KingNext: Derrick Stolee
Message 12 of 14 in “2.29.0.rc0.windows.1: Duplicate commit id error message when fetching”
  1. Thomas BraunOct 7, 2020
  2. Jeff KingOct 7, 2020
  3. Thomas BraunOct 8, 2020
  4. Jeff KingOct 8, 2020
  5. Derrick StoleeOct 8, 2020
  6. Derrick StoleeOct 8, 2020
  7. Thomas BraunOct 9, 2020
  8. Derrick StoleeOct 9, 2020
  9. Thomas BraunOct 9, 2020
  10. Derrick StoleeOct 9, 2020
  11. Jeff KingOct 9, 2020
  12. Taylor BlauOct 9, 2020
  13. Derrick StoleeOct 9, 2020
  14. Taylor BlauOct 9, 2020

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.