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

Re: [PATCH] docs/git-pack-refs: document heuristic used for packing loose refs

From
Karthik Nayak <karthik.188@gmail.com>
Date
Jul 8, 2025, 11:43 UTC
Message-ID
<CAOLa=ZSmY8ooXL1c-jE7tqjfMuz2o+wkWaV6W3_XXQFncv0JrA@mail.gmail.com>
In-Reply-To
<20250708-b4-pks-pack-refs-document-files-heuristic-v1-1-e28d65a94573@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 45 quoted lines
> The `git pack-refs --auto` flag asks the ref backend to decide for
> itself whether or not references need to be repacked. This is done to
> ensure that we don't repack in cases where the backend is already in a
> good-enough state, which is typically the case for the "reftable"
> backend that performs auto-compaction on writes.
>
> As such, we initially only had heuristics in place for the "reftable"
> backend. The "files" backend didn't have any heuristics, so we'd repack
> loose references every time `git pack-refs --auto` was executed. This
> caused excessive repacking with that backend though, which is why we
> eventually implemented a heuristic via c3459ae9ef2 (refs/files: use
> heuristic to decide whether to repack with `--auto`, 2024-09-04).
>
> The documentation for the `--auto` flag hasn't been updated accordingly
> and still claims that we don't have any metrics for the "files" backend.
> Update it to reflect the new reality.
>
> Reported-by: Karthik Nayak <karthik.188@gmail.com>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> Hi,
>
> a small fix for our out-of-date documentation, as discovered by Karthik.
>
> Thanks!
>
> Patrick
> ---
>  Documentation/git-pack-refs.adoc | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/git-pack-refs.adoc b/Documentation/git-pack-refs.adoc
> index 652c5497715..42b90051e69 100644
> --- a/Documentation/git-pack-refs.adoc
> +++ b/Documentation/git-pack-refs.adoc
> @@ -66,7 +66,10 @@ Pack refs as needed depending on the current state of the ref database. The
>  behavior depends on the ref format used by the repository and may change in the
>  future.
>  +
> -	- "files": No special handling for `--auto` has been implemented.
> +	- "files": Loose references are packed into the `packed-refs` file
> +	  based on the ratio of loose references to the size of the
> +	  `packed-refs` file. The bigger the `packed-refs` file, the more loose
> +	  references need to exist before we repack.
>  +

Nice. The explanation has sufficient information without going too much into detail. Perhaps a small nit would be s/ratio/logarithmic ratio/, but I'm happy with this as is.

Thanks
Show 6 quoted lines
>  	- "reftable": Tables are compacted such that they form a geometric
>  	  sequence. For two tables N and N+1, where N+1 is newer, this
>
> ---
> base-commit: 41905d60226a0346b22f0d0d99428c746a5a3b14
> change-id: 20250708-b4-pks-pack-refs-document-files-heuristic-58a9df3df946
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 2 of 4 in “docs/git-pack-refs: document heuristic used for packing loose refs”
  1. docs/git-pack-refs: document heuristic used for packing loose refsPatrick Steinhardt, Jul 8, 2025
  2. Karthik NayakJul 8, 2025
  3. Patrick SteinhardtJul 8, 2025
  4. Junio C HamanoJul 8, 2025

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.