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

Re: [PATCH 0/2] prevent `repack` to unpack and delete promisor objects

From
Jeff King <peff@peff.net>
Date
Apr 15, 2021, 09:15 UTC
Message-ID
<YHgEGHIgwfobcwDr@coredump.intra.peff.net>
In-Reply-To
<20210414191403.4387-1-rafaeloliveira.cs@gmail.com>
On Wed, Apr 14, 2021 at 09:14:01PM +0200, Rafael Silva wrote:
Show 8 quoted lines
> It took me a bit to come up with the test because it seems `repack`
> doesn't offer an option to skip the "deletion of unpacked objects",
> so this series adds a new option to `repack` for skip the
> `git prune-packed` execution thus allowing us to easily inspect the
> unpacked objects before they are removed and simplification of our
> test suite. Furthermore, The test will now test the `repack` code
> path instead of performing the operations by calling
> `pack-objects`.

Thanks for working on this. Overall the patches seem sane, though I think Jonathan's comments (especially about the confusion in the commit message of 2/2) are worth addressing.

I have mixed feelings on the "--no-prune-packed" option, just because it's user-visible and I don't think it's something a normal user would ever really want.

In the new test (and I think in the old ones you modified, though I didn't look carefully) the main thing we care about is whether we write out loose objects. So another solution would be to improve the debug logging inside pack-objects to tell us more about what it's doing.

The fork of Git we use at GitHub has something similar; when we discard objects or force them loose, we write their sha1 values to a log file. This has come in handy for a lot of after-the-fact debugging ("oops, this repo is corrupted; did we intentionally delete object X?").

I wonder if we could do something similar with the trace2 facility. I know it can be turned on via config, but I don't know how good the support is for enabling just one segment of data (and this may generate a lot of entries, so people using trace2 for telemetry probably wouldn't want it on).

For the purposes of the tests, though just a normal GIT_TRACE_PACK_DEBUG would be plenty. I dunno. I don't want to open up a can of worms on logging that would hold up getting this quite-substantial fix in place. But once we add --no-prune-packed, it will be hard to take away.

-Peff
Previous: Junio C HamanoNext: Rafael Silva
Message 38 of 46 in “rather slow 'git repack' in 'blob:none' partial clones”
  1. SZEDER GáborApr 3, 2021
  2. Rafael SilvaApr 5, 2021
  3. Jeff KingApr 7, 2021
  4. Jonathan TanApr 8, 2021
  5. Jeff KingApr 8, 2021
  6. Rafael SilvaApr 12, 2021
  7. SZEDER GáborApr 12, 2021
  8. Bryan TurnerApr 12, 2021
  9. Jeff KingApr 12, 2021
  10. Jeff KingApr 12, 2021
  11. 0/3 low-hanging performance fruit with promisor packsJeff King, Apr 13, 2021
  12. 1/3 is_promisor_object(): free tree buffer after parsingJeff King, Apr 13, 2021
  13. Junio C HamanoApr 13, 2021
  14. Jeff KingApr 14, 2021
  15. 2/3 lookup_unknown_object(): take a repository argumentJeff King, Apr 13, 2021
  16. 3/3 revision: avoid parsing with --exclude-promisor-objectsJeff King, Apr 13, 2021
  17. Junio C HamanoApr 13, 2021
  18. SZEDER GáborApr 13, 2021
  19. Jonathan TanApr 14, 2021
  20. Rafael SilvaApr 14, 2021
  21. SZEDER GáborApr 13, 2021
  22. Jeff KingApr 14, 2021
  23. SZEDER GáborApr 11, 2021
  24. Rafael SilvaApr 12, 2021
  25. 0/2 prevent `repack` to unpack and delete promisor objectsRafael Silva, Apr 14, 2021
  26. 1/2 repack: teach --no-prune-packed to skip `git prune-packed`Rafael Silva, Apr 14, 2021
  27. Jonathan TanApr 14, 2021
  28. Rafael SilvaApr 18, 2021
  29. 2/2 repack: avoid loosening promisor pack objects in partial clonesRafael Silva, Apr 14, 2021
  30. Jonathan TanApr 15, 2021
  31. Junio C HamanoApr 15, 2021
  32. Jeff KingApr 15, 2021
  33. Jeff KingApr 15, 2021
  34. Rafael SilvaApr 18, 2021
  35. Junio C HamanoApr 15, 2021
  36. Rafael SilvaApr 18, 2021
  37. Junio C HamanoApr 14, 2021
  38. Jeff KingApr 15, 2021
  39. Rafael SilvaApr 18, 2021
  40. 0/1 prevent `repack` to unpack and delete promisor objectsRafael Silva, Apr 18, 2021
  41. 1/1 repack: avoid loosening promisor objects in partial clonesRafael Silva, Apr 18, 2021
  42. Jonathan TanApr 19, 2021
  43. Rafael SilvaApr 21, 2021
  44. Junio C HamanoApr 19, 2021
  45. Rafael SilvaApr 21, 2021
  46. repack: avoid loosening promisor objects in partial clonesRafael Silva, Apr 21, 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.