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

Re: [PATCH 00/11] [RFC] Create 'core.size=large' setting to update config defaults

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 5, 2019, 20:39 UTC
Message-ID
<xmqqftonsr6a.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<pull.254.git.gitgitgadget@gmail.com>
"Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 15 quoted lines
> This patch series includes a few new config options we created to speed up
> certain critical commands in VFS for Git. On their own, they would
> contribute little value as it is hard to discover new config variables.
> Instead, I've created this RFC as a goal for probably three sequential patch
> series:
>
>  1. (Patches 1-3) Introduce a new 'core.size' config setting that takes
>     'large' as a value. This enables several config values that are
>     beneficial for large repos. We use a certain set in VFS for Git (see
>     [1]), and most of those are applicable to any repo. This 'core.size'
>     setting is intended for users to automatically receive performance
>     updates as soon as they are stable, but they must opt-in to the setting
>     and can always explicitly set their own config values. The settings to
>     include here are core.commitGraph=true, gc.writeCommitGraph=true,
>     index.version=4, pack.useSparse=true.

... and not the configuration introduced by the other two points in this list?

"If you set this, these other configuration variables are set to these default values" is a very valuable usability feature. It looks a lot more "meta" or "macro", and certainly is not a good idea to call it as if it sits next to variables in any existing hierarchy.

I also wonder if this is something we would want to support in general; random things that come to mind are:

 - should such a "macro" configuration be limited to boolean
   (e.g. the above core.size that takes 'large' is a boolean between
   'large' and 'not large'), or can it be an enum (e.g. choose among
   'large', 'medium' and 'small', and core.bigFileThreshold will be
   set to 1G, 512M and 128M respectively---this silly example is for
   illustration purposes only), and if so, can we express what these
   default values are for each choice without writing a lot of code?
 - if we were to have more than just this 'core.size' macro, can two
   otherwise orthogonal macros both control the same underlying
   variable, and if so, how do we express their interactions?
   "using these two at the same time is forbidden" is a perfectly
   acceptable answer for the first round until we figure out the
   desired semantics, of course.
 - perhaps we may eventually want to allow end users (via their
   ~/.gitconfig) and system administrators (via /etc/gitconfig)
   define such a macro setting (e.g. setting macro.largeRepoSetting
   sets pack.usebitmaps=true, pack.useSpars=true, etc.) *after* we
   figure out what we want to do to the other points in this list.
 - even if we do not allow end users and system administrators futz
   with custom macros, can we specify the macros we ship without
   casting them in code?
Previous: Derrick StoleeNext: Derrick Stolee
Message 17 of 48 in “[RFC] Create 'core.size=large' setting to update config defaults”
  1. 00/11 [RFC] Create 'core.size=large' setting to update config defaultsDerrick Stolee via GitGitGadget, Jun 3, 2019
  2. 01/11 repo-settings: create repo.size=large settingDerrick Stolee via GitGitGadget, Jun 3, 2019
  3. Jeff HostetlerJun 3, 2019
  4. 02/11 repo-settings: use index.version=4 by defaultDerrick Stolee via GitGitGadget, Jun 3, 2019
  5. 05/11 status: add warning when a/b calculation takes too long for long/normal formatJeff Hostetler via GitGitGadget, Jun 3, 2019
  6. 09/11 fetch: warn about forced updates after branch listDerrick Stolee via GitGitGadget, Jun 3, 2019
  7. 07/11 repo-settings: status.aheadBehind=falseDerrick Stolee via GitGitGadget, Jun 3, 2019
  8. 11/11 repo-settings: fetch.showForcedUpdates=falseDerrick Stolee via GitGitGadget, Jun 3, 2019
  9. 10/11 pull: add --[no-]show-forced-updates passthrough to fetchDerrick Stolee via GitGitGadget, Jun 3, 2019
  10. 08/11 fetch: add --[no-]show-forced-updates argumentDerrick Stolee via GitGitGadget, Jun 3, 2019
  11. 03/11 repo-settings: pack.useSparse=trueDerrick Stolee via GitGitGadget, Jun 3, 2019
  12. 06/11 status: ignore status.aheadbehind in porcelain formatsJeff Hostetler via GitGitGadget, Jun 3, 2019
  13. 04/11 status: add status.aheadbehind settingJeff Hostetler via GitGitGadget, Jun 3, 2019
  14. Derrick StoleeJun 3, 2019
  15. Johannes SchindelinJun 4, 2019
  16. Derrick StoleeJun 4, 2019
  17. Junio C HamanoJun 5, 2019
  18. Derrick StoleeJun 6, 2019
  19. Junio C HamanoJun 6, 2019
  20. 0/3 [RFC] Create 'core.featureAdoptionRate' setting to update config defaultsDerrick Stolee via GitGitGadget, Jun 19, 2019
  21. 2/3 repo-settings: use index.version=4 by defaultDerrick Stolee via GitGitGadget, Jun 19, 2019
  22. 3/3 repo-settings: pack.useSparse=trueDerrick Stolee via GitGitGadget, Jun 19, 2019
  23. 1/3 repo-settings: create core.featureAdoptionRate settingDerrick Stolee via GitGitGadget, Jun 19, 2019
  24. Junio C HamanoJun 28, 2019
  25. Derrick StoleeJun 28, 2019
  26. Junio C HamanoJun 28, 2019
  27. Derrick StoleeJun 29, 2019
  28. Carlo ArenasJun 30, 2019
  29. Derrick StoleeJul 1, 2019
  30. Ævar Arnfjörð BjarmasonJul 2, 2019
  31. Duy NguyenJul 2, 2019
  32. Derrick StoleeJul 2, 2019
  33. Junio C HamanoJul 2, 2019
  34. 0/3 [RFC] Create 'core.featureAdoptionRate' setting to update config defaultsDerrick Stolee via GitGitGadget, Jul 1, 2019
  35. 2/3 repo-settings: use index.version=4 by defaultDerrick Stolee via GitGitGadget, Jul 1, 2019
  36. 1/3 repo-settings: create core.featureAdoptionRate settingDerrick Stolee via GitGitGadget, Jul 1, 2019
  37. Carlo ArenasJul 1, 2019
  38. Duy NguyenJul 2, 2019
  39. Ævar Arnfjörð BjarmasonJul 2, 2019
  40. Jakub NarebskiJul 4, 2019
  41. 3/3 repo-settings: pack.useSparse=trueDerrick Stolee via GitGitGadget, Jul 1, 2019
  42. Derrick StoleeJul 8, 2019
  43. Taylor BlauJul 9, 2019
  44. Junio C HamanoJul 9, 2019
  45. Derrick StoleeJul 9, 2019
  46. Junio C HamanoJul 9, 2019
  47. Derrick StoleeJul 22, 2019
  48. Jakub NarebskiJul 11, 2019

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.