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

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

From
Kyle Lippincott <spectral@google.com>
Date
May 13, 2024, 19:48 UTC
Message-ID
<CAO_smVhxCGUD2D5m9eDj+CBmteauBuGG=6RgjADnuXgBeB5O8A@mail.gmail.com>
In-Reply-To
<20240513192112.866021-2-gitster@pobox.com>
On Mon, May 13, 2024 at 12:21 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
>
> Partially revert c8aed5e8 (repository: stop setting SHA1 as the
> default object hash, 2024-05-07), to keep end-user systems still
> broken when we have gap in our test coverage but yet give them an
> escape hatch to set the GIT_TEST_DEFAULT_HASH_IS_SHA1=1 environment
> variable to revert to the previous behaviour.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>  repository.c  | 24 ++++++++++++++++++++++++
Nice idea, this concept LG.
Show 14 quoted lines
>  t/test-lib.sh |  4 ++++
>  2 files changed, 28 insertions(+)
>
> diff --git a/repository.c b/repository.c
> index 15c10015b0..6f67966e35 100644
> --- a/repository.c
> +++ b/repository.c
> @@ -26,6 +26,30 @@ void initialize_repository(struct repository *repo)
>         repo->parsed_objects = parsed_object_pool_new();
>         ALLOC_ARRAY(repo->index, 1);
>         index_state_init(repo->index, repo);
> +
> +       /*
> +        * Unfortunately, we need to keep this hack around for the time being:
Nit: the comment says we need to keep it around, but it's actually
defaulted to off. We may want to add clarification of the current
status to the comment (or replace the entire comment with a comment
describing that we added a hack to the hack, and that it should be
removed "soon").
Show 34 quoted lines
> +        *
> +        *   - Not setting up the hash algorithm for `the_repository` leads to
> +        *     crashes because `the_hash_algo` is a macro that expands to
> +        *     `the_repository->hash_algo`. So if Git commands try to access
> +        *     `the_hash_algo` without a Git directory we crash.
> +        *
> +        *   - Setting up the hash algorithm to be SHA1 by default breaks other
> +        *     commands when running with SHA256.
> +        *
> +        * This is another point in case why having global state is a bad idea.
> +        * Eventually, we should remove this hack and stop setting the hash
> +        * algorithm in this function altogether. Instead, it should only ever
> +        * be set via our repository setup procedures. But that requires more
> +        * work.
> +        *
> +        * As we discover the code paths that need fixing, we may remove this
> +        * code completely, but we are not there yet.
> +        */
> +       if (repo == the_repository &&
> +           git_env_bool("GIT_TEST_DEFAULT_HASH_IS_SHA1", 0))
> +               repo_set_hash_algo(repo, GIT_HASH_SHA1);
>  }
>
>  static void expand_base_dir(char **out, const char *in,
> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index 79d3e0e7d9..36d311fb4a 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -542,6 +542,10 @@ export EDITOR
>
>  GIT_DEFAULT_HASH="${GIT_TEST_DEFAULT_HASH:-sha1}"
>  export GIT_DEFAULT_HASH
> +
> +GIT_TEST_DEFAULT_HASH_IS_SHA1=0

This is the default as being established in this commit, correct? Should we add a comment saying this is the default and describe why we have it here anyway?

Show 9 quoted lines
> +export GIT_TEST_DEFAULT_HASH_IS_SHA1
> +
>  GIT_DEFAULT_REF_FORMAT="${GIT_TEST_DEFAULT_REF_FORMAT:-files}"
>  export GIT_DEFAULT_REF_FORMAT
>  GIT_TEST_MERGE_ALGORITHM="${GIT_TEST_MERGE_ALGORITHM:-ort}"
> --
> 2.45.0-145-g3e4a232f6e
>
>
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 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.