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

Re: [PATCH 7/8] config: add core.untrackedCache

From
Duy Nguyen <pclouds@gmail.com>
Date
Dec 24, 2015, 09:49 UTC
Message-ID
<CACsJy8AO0BumZQmwWNVHL-viGLY=ExE3syJOt1h75zeQug95mQ@mail.gmail.com>
In-Reply-To
<xmqqio3obody.fsf@gitster.mtv.corp.google.com>
On Thu, Dec 24, 2015 at 8:56 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 46 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Duy Nguyen <pclouds@gmail.com> writes:
>>
>>> In that case we can just check config once in read_index_from and
>>> destroy UNTR extension. Or the middle ground, we check config once in
>>> that place, make a note in struct index_state, and make invalidate_*
>>> check that note instead of config file. The middle ground has an
>>> advantage over destroying UNTR: (probably) many operations will touch
>>> index but do not add or remove entries.
>>
>> Or we can even teach read_index_from() to skip reading the extension
>> without even parsing when the configuration tells it that the
>> feature is force-disabled.  It can also add an empty one when the
>> configuration tells it that the feature is force-enabled and there
>> is no UNTR extension yet.
>
> Thinking about this a bit more, I am starting to feel that the
> config that can be used to optionally override the presence of
> in-index UNTR extension does not have to be too bad a thing,
> provided if it is done with a few tweaks to the design I read in
> Christian & Ævar's messages.
>
> One tweak is to address the following from Ævar's message:
>
>>> Once this series is applied and git is shipped with it existing
>>> users that have set "git update-index --untracked-cache" will have
>>> their UC feature disabled. This is because we fall back to "oh no
>>> config here? Must have been disabled, rm it from the index" clause
>>> which keeps our UC from going stale in the face of config
>>> flip-flopping.
>
> The above would happen only if the configuration is a boolean that
> defaults to false.  I'd think we can have this a tristate instead.
> That is, config.untrackedCache can be explicitly set to 'true',
> 'false', or 'keep'.  And make a missing config.untrackedCache
> default to 'keep'.
>
> When read_index_from() reads an existing index:
>
>     When the configuration is set to 'true':
>         an existing UNTR is kept, otherwise a new UNTR gets added.
>     When the configuration is set to 'false:
>         an existing UNTR is dropped.
>     When the configuration is set to 'keep':
>         an existing UNTR is kept, otherwise nothing happens.
Sounds good, except..
> When write_index() writes out an index that wasn't initialized from
> the filesystem, a new UNTR gets added only when the configuration is
> set to 'true' and there is no in-core UNTR already.

Do we really need this? If the index is created fresh from the core, first write will not have UNTR. Next time it's loaded up, UNTR is added if config is true, based on the above rules. The new UNTR extension (should?) marks the index as dirty as writing out is required.

> Orthogonal to the "config overrides the existing users' practice"
> issue,

Yeah it looks orthogonal to me too. There should be a separate config file like /etc/gitconfig.lockdown, that will override user config vars (but we still can't undefine user config vars yet, known missing feature).

-- 
Duy
Previous: Junio C HamanoNext: Junio C Hamano
Message 46 of 54 in “Untracked cache improvements”
  1. 0/8 Untracked cache improvementsChristian Couder, Dec 8, 2015
  2. 1/8 update-index: add untracked cache notificationsChristian Couder, Dec 8, 2015
  3. Junio C HamanoDec 8, 2015
  4. Christian CouderDec 11, 2015
  5. 2/8 update-index: use enum for untracked cache optionsChristian Couder, Dec 8, 2015
  6. Junio C HamanoDec 8, 2015
  7. Christian CouderDec 10, 2015
  8. Junio C HamanoDec 10, 2015
  9. Christian CouderDec 11, 2015
  10. Junio C HamanoDec 11, 2015
  11. Christian CouderDec 12, 2015
  12. 3/8 update-index: add --test-untracked-cacheChristian Couder, Dec 8, 2015
  13. 4/8 update-index: move 'uc' var declarationChristian Couder, Dec 8, 2015
  14. 5/8 dir: add add_untracked_cache()Christian Couder, Dec 8, 2015
  15. Torsten BögershausenDec 9, 2015
  16. Christian CouderDec 11, 2015
  17. 6/8 dir: add remove_untracked_cache()Christian Couder, Dec 8, 2015
  18. Junio C HamanoDec 8, 2015
  19. Torsten BögershausenDec 9, 2015
  20. 7/8 config: add core.untrackedCacheChristian Couder, Dec 8, 2015
  21. Junio C HamanoDec 8, 2015
  22. Junio C HamanoDec 8, 2015
  23. Christian CouderDec 14, 2015
  24. Junio C HamanoDec 14, 2015
  25. Junio C HamanoDec 14, 2015
  26. Christian CouderDec 15, 2015
  27. Torsten BögershausenDec 15, 2015
  28. Christian CouderDec 15, 2015
  29. Duy NguyenDec 15, 2015
  30. Christian CouderDec 15, 2015
  31. Ævar Arnfjörð BjarmasonDec 15, 2015
  32. Christian CouderDec 15, 2015
  33. Junio C HamanoDec 15, 2015
  34. Ævar Arnfjörð BjarmasonDec 15, 2015
  35. Junio C HamanoDec 15, 2015
  36. Ævar Arnfjörð BjarmasonDec 16, 2015
  37. Jeff KingDec 16, 2015
  38. Junio C HamanoDec 16, 2015
  39. Junio C HamanoDec 16, 2015
  40. Jeff KingDec 17, 2015
  41. Duy NguyenDec 17, 2015
  42. Junio C HamanoDec 21, 2015
  43. Duy NguyenDec 22, 2015
  44. Junio C HamanoDec 22, 2015
  45. Junio C HamanoDec 24, 2015
  46. Duy NguyenDec 24, 2015
  47. Junio C HamanoDec 27, 2015
  48. Christian CouderDec 24, 2015
  49. Duy NguyenDec 17, 2015
  50. Christian CouderDec 18, 2015
  51. Torsten BögershausenDec 9, 2015
  52. 8/8 t7063: add tests for core.untrackedCacheChristian Couder, Dec 8, 2015
  53. Fwd: [PATCH 7/8] config: add core.untrackedCacheChristian Couder, Dec 18, 2015
  54. Fwd: [PATCH 7/8] config: add core.untrackedCacheChristian Couder, Dec 18, 2015

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.