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

Re: [PATCH 06/14] packfile: express constants in terms of the_hash_algo

From
Stefan Beller <sbeller@google.com>
Date
Oct 8, 2018, 22:59 UTC
Message-ID
<CAGZ79kbirX6i+qkig6R1YOAsv=0BirhAVkar+AdBLyHgkrXYyg@mail.gmail.com>
In-Reply-To
<20181008215701.779099-7-sandals@crustytoothpaste.net>

On Mon, Oct 8, 2018 at 2:57 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:

>
> Replace uses of GIT_SHA1_RAWSZ with references to the_hash_algo to avoid
> dependence on a particular hash length.

Unlike the previous patches, this is dealing directly with packfiles, which (I would think) carry their own hash function selector? (i.e. packfiles up to version 4 are sha1 hardcoded and version 5 and onwards will have a hash type field. Usually that hash type would match what is in the_repository, but you could obtain packfiles out of band, or the translation table that we plan to have might be part of the packfile/idx file?)

Show 27 quoted lines
>
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  packfile.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/packfile.c b/packfile.c
> index 841b36182f..17f993b5bf 100644
> --- a/packfile.c
> +++ b/packfile.c
> @@ -1121,13 +1121,14 @@ int unpack_object_header(struct packed_git *p,
>  void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1)
>  {
>         unsigned i;
> +       const unsigned hashsz = the_hash_algo->rawsz;
>         for (i = 0; i < p->num_bad_objects; i++)
> -               if (hasheq(sha1, p->bad_object_sha1 + GIT_SHA1_RAWSZ * i))
> +               if (hasheq(sha1, p->bad_object_sha1 + hashsz * i))
>                         return;
>         p->bad_object_sha1 = xrealloc(p->bad_object_sha1,
>                                       st_mult(GIT_MAX_RAWSZ,
>                                               st_add(p->num_bad_objects, 1)));
> -       hashcpy(p->bad_object_sha1 + GIT_SHA1_RAWSZ * p->num_bad_objects, sha1);
> +       hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, sha1);
>         p->num_bad_objects++;
>  }
>
Previous: brian m. carlsonNext: brian m. carlson
Message 8 of 30 in “Hash function transition part 15”
  1. 00/14 Hash function transition part 15brian m. carlson, Oct 8, 2018
  2. 01/14 pack-bitmap-write: use GIT_MAX_RAWSZ for allocationbrian m. carlson, Oct 8, 2018
  3. 02/14 builtin/repack: replace hard-coded constantbrian m. carlson, Oct 8, 2018
  4. Stefan BellerOct 8, 2018
  5. Eric SunshineOct 8, 2018
  6. brian m. carlsonOct 9, 2018
  7. 06/14 packfile: express constants in terms of the_hash_algobrian m. carlson, Oct 8, 2018
  8. Stefan BellerOct 8, 2018
  9. brian m. carlsonOct 9, 2018
  10. Stefan BellerOct 9, 2018
  11. brian m. carlsonOct 9, 2018
  12. 03/14 builtin/mktree: remove hard-coded constantbrian m. carlson, Oct 8, 2018
  13. Stefan BellerOct 8, 2018
  14. 04/14 builtin/fetch-pack: remove constants with parse_oid_hexbrian m. carlson, Oct 8, 2018
  15. 05/14 pack-revindex: express constants in terms of the_hash_algobrian m. carlson, Oct 8, 2018
  16. Stefan BellerOct 8, 2018
  17. brian m. carlsonOct 9, 2018
  18. 07/14 refs/packed-backend: express constants using the_hash_algobrian m. carlson, Oct 8, 2018
  19. 08/14 upload-pack: express constants in terms of the_hash_algobrian m. carlson, Oct 8, 2018
  20. 10/14 tag: express constant in terms of the_hash_algobrian m. carlson, Oct 8, 2018
  21. 09/14 transport: use parse_oid_hex instead of a constantbrian m. carlson, Oct 8, 2018
  22. 11/14 apply: replace hard-coded constantsbrian m. carlson, Oct 8, 2018
  23. 12/14 apply: rename new_sha1_prefix and old_sha1_prefixbrian m. carlson, Oct 8, 2018
  24. 13/14 submodule: make zero-oid comparison hash function agnosticbrian m. carlson, Oct 8, 2018
  25. Stefan BellerOct 8, 2018
  26. 14/14 rerere: convert to use the_hash_algobrian m. carlson, Oct 8, 2018
  27. Stefan BellerOct 8, 2018
  28. object_id.cocci: match only expressions of type 'struct object_id'SZEDER Gábor, Oct 12, 2018
  29. Junio C HamanoOct 15, 2018
  30. Junio C HamanoOct 15, 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.