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

How does GitGitGadget generate range-diffs, was Re: [PATCH v2 0/6] Support hashing objects larger than 4GB on Windows

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 17, 2026, 10:39 UTC
Message-ID
<fcb9e52a-5f71-1fd0-a18e-c48e22e6e28c@gmx.de>
In-Reply-To
<xmqqfr2m4gd1.fsf@gitster.g>
Hi Junio,
On Wed, 17 Jun 2026, Junio C Hamano wrote:
Show 13 quoted lines
> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
> > Range-diff vs v1:
> >
> >  1:  84e1cd0aa0 = 1:  9c01bac407 hash-object: demonstrate a >4GB/LLP64 problem
> >  2:  809d83e46f ! 2:  aa5859c14f object-file.c: use size_t for header lengths
> >      @@ Commit message
> 
> By the way, how is range-diff driven via GGG?  After applying these
> patches on the same base commit, my "git range-diff v1...v2" invocation
> punts on matching step 2 and I do not get a comparison like this unless
> I give --creation-factor=<large number> from the command line.

GitGitGadget is using range-diff to compare between iterations of essentially the same patches, therefore it encourages `range-diff` to try harder to look for matches via `--creation-factor=95`: https://github.com/gitgitgadget/gitgitgadget/blob/bf9140eef184/lib/patch-series.ts#L722

The full details how the magic number "95" was determined is in the commit https://github.com/gitgitgadget/gitgitgadget/commit/2605f72f92bb0ff63f4db91eaf91969749568dd7 (essentially, I played with a couple of values and known hard-cases of actual, real-world patch series iterations and 95 was the best compromise).

Ciao, Johannes

Previous: Junio C HamanoNext: Junio C Hamano
Message 25 of 27 in “Support hashing objects larger than 4GB on Windows”
  1. 0/6 Support hashing objects larger than 4GB on WindowsJohannes Schindelin via GitGitGadget, Jun 4, 2026
  2. 1/6 hash-object: demonstrate a >4GB/LLP64 problemPhilip Oakley via GitGitGadget, Jun 4, 2026
  3. 2/6 object-file.c: use size_t for header lengthsPhilip Oakley via GitGitGadget, Jun 4, 2026
  4. Patrick SteinhardtJun 15, 2026
  5. Johannes SchindelinJun 16, 2026
  6. 3/6 hash algorithms: use size_t for section lengthsPhilip Oakley via GitGitGadget, Jun 4, 2026
  7. Patrick SteinhardtJun 15, 2026
  8. Johannes SchindelinJun 16, 2026
  9. 4/6 hash-object --stdin: verify that it works with >4GB/LLP64Philip Oakley via GitGitGadget, Jun 4, 2026
  10. Patrick SteinhardtJun 15, 2026
  11. 5/6 hash-object: add another >4GB/LLP64 test casePhilip Oakley via GitGitGadget, Jun 4, 2026
  12. Patrick SteinhardtJun 15, 2026
  13. Johannes SchindelinJun 16, 2026
  14. 6/6 hash-object: add a >4GB/LLP64 test case using filtered inputPhilip Oakley via GitGitGadget, Jun 4, 2026
  15. Philip OakleyJun 4, 2026
  16. Junio C HamanoJun 8, 2026
  17. 0/6 Support hashing objects larger than 4GB on WindowsJohannes Schindelin via GitGitGadget, Jun 16, 2026
  18. 1/6 hash-object: demonstrate a >4GB/LLP64 problemPhilip Oakley via GitGitGadget, Jun 16, 2026
  19. 2/6 object-file.c: use size_t for header lengthsPhilip Oakley via GitGitGadget, Jun 16, 2026
  20. 3/6 hash algorithms: use size_t for section lengthsPhilip Oakley via GitGitGadget, Jun 16, 2026
  21. 4/6 hash-object --stdin: verify that it works with >4GB/LLP64Philip Oakley via GitGitGadget, Jun 16, 2026
  22. 5/6 hash-object: add another >4GB/LLP64 test casePhilip Oakley via GitGitGadget, Jun 16, 2026
  23. 6/6 hash-object: add a >4GB/LLP64 test case using filtered inputPhilip Oakley via GitGitGadget, Jun 16, 2026
  24. Junio C HamanoJun 16, 2026
  25. How does GitGitGadget generate range-diffs, was Re: [PATCH v2 0/6] Support hashing objects larger than 4GB on WindowsJohannes Schindelin, Jun 17, 2026
  26. Junio C HamanoJun 17, 2026
  27. Patrick SteinhardtJun 18, 2026

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.