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

Re: [PATCH v4 1/5] setup: add an escape hatch for "no more default hash algorithm" change

From
Patrick Steinhardt <ps@pks.im>
Date
May 14, 2024, 04:32 UTC
Message-ID
<ZkLpSW6TNcpKpg-V@tanuki>
In-Reply-To
<20240514011437.3779151-2-gitster@pobox.com>

On Mon, May 13, 2024 at 06:14:33PM -0700, Junio C Hamano wrote: [snip]

Show 35 quoted lines
> diff --git a/repository.c b/repository.c
> index 15c10015b0..f912ee9a7c 100644
> --- a/repository.c
> +++ b/repository.c
> @@ -1,5 +1,6 @@
>  #include "git-compat-util.h"
>  #include "abspath.h"
> +#include "environment.h"
>  #include "repository.h"
>  #include "object-store-ll.h"
>  #include "config.h"
> @@ -19,6 +20,27 @@
>  static struct repository the_repo;
>  struct repository *the_repository = &the_repo;
>  
> +static void set_default_hash_algo(struct repository *repo)
> +{
> +	const char *hash_name;
> +	int algo;
> +
> +	hash_name = getenv(GIT_DEFAULT_HASH_ENVIRONMENT);
> +	if (!hash_name)
> +		return;
> +	algo = hash_algo_by_name(hash_name);
> +
> +	/*
> +	 * NEEDSWORK: after all, falling back to SHA-1 by assigning
> +	 * GIT_HASH_SHA1 to algo here, instead of returning, may give
> +	 * us better behaviour.
> +	 */
> +	if (algo == GIT_HASH_UNKNOWN)
> +		return;
> +
> +	repo_set_hash_algo(repo, algo);
> +}

The problem with reusing "GIT_DEFAULT_HASH" is that we unconditionally set it in our test suite in "test-lib.sh". This will have the effect that we will never hit segfaults in our tests because we always end up setting up the default hash, whereas our users now will.

I would propose to revert this back to the first iteration you had, where the workaround only enables the SHA1 fallback. No users have yet complained about the inability to pick the hash algo outside of a repo, indicating that it's not widely used. And when they complain, there is more motivation to fix this properly by adding a `--object-hash=` switch to the respective commands so that a user can pick the desired object hash.

Patrick
Previous: Junio C HamanoNext: Junio C Hamano
Message 32 of 62 in “Fix use of uninitialized hash algos”
  1. 0/2 Fix use of uninitialized hash algosPatrick Steinhardt, May 13, 2024
  2. 1/2 builtin/patch-id: fix uninitialized hash functionPatrick Steinhardt, May 13, 2024
  3. 2/2 builtin/hash-object: fix uninitialized hash functionPatrick Steinhardt, May 13, 2024
  4. Junio C HamanoMay 14, 2024
  5. Junio C HamanoMay 13, 2024
  6. Junio C HamanoMay 13, 2024
  7. 0/4 Fix use of uninitialized hash algorithmsJunio C Hamano, May 13, 2024
  8. 1/4 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 13, 2024
  9. Kyle LippincottMay 13, 2024
  10. 2/4 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 13, 2024
  11. Kyle LippincottMay 13, 2024
  12. Junio C HamanoMay 13, 2024
  13. Junio C HamanoMay 13, 2024
  14. Kyle LippincottMay 13, 2024
  15. 3/4 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  16. 4/4 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  17. 5/4 apply: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  18. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 13, 2024
  19. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 13, 2024
  20. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 13, 2024
  21. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  22. Junio C HamanoMay 13, 2024
  23. Patrick SteinhardtMay 14, 2024
  24. Junio C HamanoMay 14, 2024
  25. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  26. Junio C HamanoMay 13, 2024
  27. Patrick SteinhardtMay 14, 2024
  28. Junio C HamanoMay 14, 2024
  29. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 13, 2024
  30. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 14, 2024
  31. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 14, 2024
  32. Patrick SteinhardtMay 14, 2024
  33. Junio C HamanoMay 14, 2024
  34. Junio C HamanoMay 14, 2024
  35. Patrick SteinhardtMay 15, 2024
  36. Junio C HamanoMay 16, 2024
  37. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 14, 2024
  38. Patrick SteinhardtMay 14, 2024
  39. Junio C HamanoMay 14, 2024
  40. Patrick SteinhardtMay 15, 2024
  41. Junio C HamanoMay 15, 2024
  42. Patrick SteinhardtMay 15, 2024
  43. Junio C HamanoMay 15, 2024
  44. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  45. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  46. Junio C HamanoMay 17, 2024
  47. Junio C HamanoMay 20, 2024
  48. Junio C HamanoMay 20, 2024
  49. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 14, 2024
  50. 0/5 Fix use of uninitialized hash algorithmsJunio C Hamano, May 20, 2024
  51. 1/5 setup: add an escape hatch for "no more default hash algorithm" changeJunio C Hamano, May 20, 2024
  52. Patrick SteinhardtMay 21, 2024
  53. Junio C HamanoMay 21, 2024
  54. 2/5 t1517: test commands that are designed to be run outside repositoryJunio C Hamano, May 20, 2024
  55. 3/5 builtin/patch-id: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  56. 4/5 builtin/hash-object: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  57. 5/5 apply: fix uninitialized hash functionJunio C Hamano, May 20, 2024
  58. Patrick SteinhardtMay 21, 2024
  59. Junio C HamanoMay 21, 2024
  60. Patrick SteinhardtMay 21, 2024
  61. Junio C HamanoMay 21, 2024
  62. Patrick SteinhardtMay 22, 2024

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.