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

Re: [PATCH v2] doc: remove misleading documentation on pack names

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 22, 2020, 21:09 UTC
Message-ID
<xmqq5zaf5ka6.fsf@gitster.c.googlers.com>
In-Reply-To
<20200722202629.109277-1-johannes@sipsolutions.net>
Johannes Berg <johannes@sipsolutions.net> writes:
Show 10 quoted lines
> The index-pack documentation explicitly states that the pack
> name is derived from the sorted list of object names, but
> that clearly isn't true. I can't seem to be able to figure
> out if this was ever changed though.
>
> Be less explicit in the docs as to what the exact output is,
> and just say that it's whatever goes into the pack name.
>
> Really it seems to be the sha1 of the entire file, without
> the checksum footer.

Please avoid "seems to be" and spend a bit of effort digging the history especially when we are not in a hurry to get to the definite answer. We can go "less explicit", or be a bit more informative by saying that it is the trailer hash that is standard practice shared across our binary files like the index and the packfile.

I think this is 1190a1ac (pack-objects: name pack files after trailer hash, 2013-12-05). It forgot to update the comment before write_idx_file() function when it did this change:

 /*
  * On entry *sha1 contains the pack content SHA1 hash, on exit it is
  * the SHA1 hash of sorted object names. The objects array passed in
  * will be sorted by SHA1 on exit.
  */
 const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects,
 			   int nr_objects, const struct pack_idx_option *opts,
-			   unsigned char *sha1)
+			   const unsigned char *sha1)
 {

Obviously, after it turned *sha1 into 'const', it no longer is possible for it to have anything different from what was passed in upon exit.

Show 5 quoted lines
> +Once the index has been created, the hash that goes into the name of
> +the pack/idx file is printed to stdout. If --stdin was also used then
> +this is prefixed by either "pack\t", or "keep\t" if a new .keep file
> +was successfully created. This is useful to remove a .keep file used
> +as a lock to prevent the race with 'git repack' mentioned above.

The change is good---I made sure that among these filve lines, what changed was only the first one and half lines. I however would have preferred not to see the line rewrapping.

Thanks.
Previous: Johannes BergNext: Johannes Berg
Message 2 of 4 in “doc: remove misleading documentation on pack names”
  1. doc: remove misleading documentation on pack namesJohannes Berg, Jul 22, 2020
  2. Junio C HamanoJul 22, 2020
  3. Johannes BergJul 22, 2020
  4. Junio C HamanoJul 22, 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.