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

Re: worktrees vs. alternates

From
Jeff King <peff@peff.net>
Date
May 16, 2018, 19:23 UTC
Message-ID
<20180516192343.GB3417@sigill.intra.peff.net>
In-Reply-To
<e8776c83-ea57-456d-5bc8-ca2fc990bed0@linuxfoundation.org>
On Wed, May 16, 2018 at 03:01:13PM -0400, Konstantin Ryabitsev wrote:
Show 11 quoted lines
> On 05/16/18 14:26, Martin Fick wrote:
> > If you are going to keep the unreferenced objects around 
> > forever, it might be better to keep them around in packed 
> > form?
> 
> I'm undecided about that. On the one hand this does create lots of small
> files and inevitably causes (some) performance degradation. On the other
> hand, I don't want to keep useless objects in the pack, because that
> would also cause performance degradation for people cloning the "mother
> repo." If my assumptions on any of that are incorrect, I'm happy to
> learn more.

I implemented "repack -k", which keeps all objects and just rolls them into the new pack (along with any currently-loose unreachable objects). Aside from corner cases (e.g., where somebody accidentally added a 20GB file to an otherwise 100MB-repo and then rolled it back), it usually doesn't significantly affect the repository size.

And it generally should not cause performance problems for people cloning, since Git will create a custom pack for each client with only the reachable objects.

There _is_ an interesting corner case where a reachable object might be a delta against an unreachable one, which can cause a clone to have to break that relationship and find a new delta. At GitHub we have some custom code that tries to avoid these kind of delta dependencies (not just to unreachable objects, but to other forks that share object storage). You can see the patch at:

  https://github.com/peff/git jk/delta-islands
-Peff
Previous: Martin FickNext: Konstantin Ryabitsev
Message 21 of 34 in “worktrees vs. alternates”
  1. Lars SchneiderMay 16, 2018
  2. Ævar Arnfjörð BjarmasonMay 16, 2018
  3. Robert P. J. DayMay 16, 2018
  4. Ævar Arnfjörð BjarmasonMay 16, 2018
  5. Lars SchneiderMay 16, 2018
  6. Ævar Arnfjörð BjarmasonMay 16, 2018
  7. Derrick StoleeMay 16, 2018
  8. Konstantin RyabitsevMay 16, 2018
  9. Ævar Arnfjörð BjarmasonMay 16, 2018
  10. Konstantin RyabitsevMay 16, 2018
  11. Ævar Arnfjörð BjarmasonMay 16, 2018
  12. Martin FickMay 16, 2018
  13. Konstantin RyabitsevMay 16, 2018
  14. Ævar Arnfjörð BjarmasonMay 16, 2018
  15. Konstantin RyabitsevMay 16, 2018
  16. Martin FickMay 16, 2018
  17. Konstantin RyabitsevMay 16, 2018
  18. Martin FickMay 16, 2018
  19. Konstantin RyabitsevMay 16, 2018
  20. Martin FickMay 16, 2018
  21. Jeff KingMay 16, 2018
  22. Konstantin RyabitsevMay 16, 2018
  23. Jeff KingMay 16, 2018
  24. Martin FickMay 16, 2018
  25. Jeff KingMay 16, 2018
  26. Martin FickMay 16, 2018
  27. Konstantin RyabitsevMay 16, 2018
  28. Jeff KingMay 16, 2018
  29. Sitaram ChamartyMay 17, 2018
  30. Jeff KingMay 17, 2018
  31. Duy NguyenMay 19, 2018
  32. Jeff KingMay 16, 2018
  33. Stefan BellerMay 16, 2018
  34. Jeff KingMay 16, 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.