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

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

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 14, 2015, 19:44 UTC
Message-ID
<xmqq6100ke7v.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAP8UFD3at0X9ThpXGTwyPnu_dXFj6x=YzfkCa82m+RsWwhFOOA@mail.gmail.com>
Christian Couder <christian.couder@gmail.com> writes:
> In fact "git update-index --[no-|force-]untracked-cache" is very bad
> because it means that two repositories can be configured differently
> even if they have the same config files.

If you stop thinking that "update-index --untracked-cache" is somehow a "configuration", things will get clearer to you.

Imagine there is no configuration whatsoever. The index primarily keeps track of what will be in the next "write-tree", but optionally it can keep track of other kinds of information, such as the last unmerged states for paths whose conflicts have been resolved. Duy's work adds another kind of information to the mix--cached stat bits for untracked paths to speed up the next "git status", and the option is to start keeping track of that information in the index.

Because it is a "cache", once you start keeping track of it, you need to maintain it--otherwise you will be fooled by stale information still in the cache. So of course the effect has to persist. There is nothing _wrong_ with that. If you want to stop maintaining it, you can tell the index "don't use untracked-cache".

So I think the above "is very bad because" is total nonsense.
> If you want only some repos to use the UC, you will set
> core.untrackedCache in the repo config. Then after cloning such a
> repo, you will copy the config file, and this will not be enough to
> enable the UC.

Surely. "Does this index file keeps track of the untracked files' states?" is a property of the index. Cloning does not propagate the configuration and copying or not copying is irrelevant. If you want to enable, running "update-index --untracked-cache" is a way to do so. I cannot see what's so hard about it.

> And if you have set core.untrackedCache in the global config when you
> clone, UC is enabled, but if you have just set it in the repo config
> after the clone, it is not enabled.

That's fine. In your patch series, if you set it in the global, you will get the cache in the new one. With the cleaned-up semantics I suggested, the same thing will happen.

And with the cleaned-up semantics, the configuration is *ONLY* used to give the *DEFAULT* before other things happen, i.e. creation of the index file for the first time. Because the configuration is only the default, an explicit "update-index --[no-]untracked-cache" will defeat it, just like any other config/option interaction.

The biggest issue I had with your patch series, IIRC, is that configuration will defeat the command line option.

> Shouldn't it be nice if they could just enable core.untrackedCache in
> the global config files without having to also cd into every repo and
> use "git update-index --untracked-cache" there?
NO.  It is bad to change the behaviour behind users' back.

Set that once, _future_ repositories their users will create will use that by default, and tell their users what to do to their existing repositories. Problem solved.

> "git update-index --[no-|force-]untracked-cache" is a bad way, so
> let's make it easy for people to not use it at all.

As I disagree with that basic premise, I have to disagree with the conclusion as well.

Previous: Christian CouderNext: Junio C Hamano
Message 24 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.