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

Re: [PATCH v6 4/4] check_repository_format_gently(): refuse extensions for old repositories

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 8, 2020, 16:59 UTC
Message-ID
<xmqqpna9lchh.fsf@gitster.c.googlers.com>
In-Reply-To
<20200605091004.208668-5-delphij@google.com>
Xin Li <delphij@google.com> writes:
Show 13 quoted lines
> Previously, extensions were recognized regardless of repository format
> version.  If the user sets an undefined "extensions" value on a
> repository of version 0 and that value is used by a future git version,
> they might get an undesired result.
>
> Because all extensions now also upgrade repository versions, tightening
> the check would help avoid this for future extensions.
>
> Signed-off-by: Xin Li <delphij@google.com>
> ---
>  setup.c                  | 12 +++++++++---
>  t/t0410-partial-clone.sh | 11 +++++++++++
>  2 files changed, 20 insertions(+), 3 deletions(-)
Thanks.

People, I think this is the only bit that is potentially controversial with the risk of breaking existing set-up. Its potentially negative effect can be seen in the patch to test in the previous step.

     test_expect_success 'enable worktreeConfig extension' '
    +	git config core.repositoryformatversion 1 &&
        git config extensions.worktreeConfig true &&
It used to be that, by mistake, you could just say
    git config extensions.worktreeConfig true

in an existing repository (with extra worktrees) and expect that alone is enough to let you use per-worktree configuration files.

With this patch, that is no longer true, because the extensions.* will not take effect unless you upgrade core.repositoryformatversion to 1.

It is the right thing to do in the longer term (we could even consider it a bugfix), and the workaround is simple enough.

Unless the user is somehow using a configuration variable whose name begins with "extensions." for whatever random purpose, that is. If the user's setup uses extensions.bar, there is no workaround possible other than renaming the variable to put it outside extensions.* hierarchy, and update whatever tool that is using that variable to use the renamed variable.

Comments?
Previous: Xin Li
Message 30 of 30 in “fetch: allow adding a filter after initial clone.”
  1. fetch: allow adding a filter after initial clone.Xin Li, May 13, 2020
  2. Junio C HamanoMay 13, 2020
  3. Xin LiMay 13, 2020
  4. Junio C HamanoMay 13, 2020
  5. Junio C HamanoMay 13, 2020
  6. brian m. carlsonMay 13, 2020
  7. 0/1 fetch: allow adding a filter after initial cloneXin Li, May 28, 2020
  8. 1/1 fetch: allow adding a filter after initial clone.Xin Li, May 28, 2020
  9. Jonathan NiederMay 28, 2020
  10. fetch: allow adding a filter after initial clone.Xin Li, May 28, 2020
  11. Junio C HamanoMay 28, 2020
  12. Jonathan NiederMay 28, 2020
  13. Xin LiMay 28, 2020
  14. Jonathan NiederMay 28, 2020
  15. fetch: allow adding a filter after initial clone.Xin Li, May 29, 2020
  16. Junio C HamanoMay 29, 2020
  17. Junio C HamanoMay 29, 2020
  18. Jonathan NiederMay 29, 2020
  19. fetch: allow adding a filter after initial cloneXin Li, May 29, 2020
  20. Xin LiMay 29, 2020
  21. Junio C HamanoMay 29, 2020
  22. 0/4 fetch: allow adding a filter after initial cloneXin Li, Jun 5, 2020
  23. 1/4 repository: add a helper function to perform repository format upgradeXin Li, Jun 5, 2020
  24. Junio C HamanoJun 5, 2020
  25. 2/4 fetch: allow adding a filter after initial cloneXin Li, Jun 5, 2020
  26. Junio C HamanoJun 5, 2020
  27. 3/4 sparse-checkout: upgrade repository to version 1 when enabling extensionXin Li, Jun 5, 2020
  28. Junio C HamanoJun 5, 2020
  29. 4/4 check_repository_format_gently(): refuse extensions for old repositoriesXin Li, Jun 5, 2020
  30. Junio C HamanoJun 8, 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.