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

Re: [PATCH 0/5] Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROS

From
Stefan Beller <sbeller@google.com>
Date
May 2, 2017, 04:17 UTC
Message-ID
<CAGZ79kZkssTEdNyzYh1YYv89szvig=rn2j3DJcHxsbzdADRw-w@mail.gmail.com>
In-Reply-To
<xmqq7f20f3a8.fsf@gitster.mtv.corp.google.com>
On Mon, May 1, 2017 at 6:36 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 12 quoted lines
> Stefan Beller <sbeller@google.com> writes:
>
>> This applies to origin/master.
>>
>> For better readability and understandability for newcomers it is a good idea
>> to not offer 2 APIs doing the same thing with on being the #define of the other.
>>
>> In the long run we may want to drop the macros guarded by
>> NO_THE_INDEX_COMPATIBILITY_MACROS. This converts a couple of them.
>
> Why?  Why should we keep typing &the_index, when most of the time we
> are given _the_ index and working on it?

As someone knowledgeable with the code base you know that the cache_* and index_* functions only differ by an index argument. A newcomer may not know this, so they wonder why we have (A) so many functions [and which is the right function to use]; it is an issue of ease of use of the code base.

Anything you do In submodule land today needs to spawn new processes in the submodule. This is cumbersome and not performant. So in the far future we may want to have an abstraction of a repo (B), i.e. all repository state in one struct/class. That way we can open a submodule in-process and perform the required actions without spawning a process.

The road to (B) is a long road, but we have to art somewhere. And this seemed like a good place by introducing a dedicated argument for the repository. In a follow up in the future we may want to replace &the_index by "the_main_repo.its_index" and then could also run the commands on other (submodule) indexes. But more importantly, all these commands would operate on a repository object.

In such a far future we would have functions like the cmd_* functions that would take a repository object instead of doing its setup discovery on their own.

Another reason may be its current velocity (or absence of it) w.r.t. to these functions, such that fewer merge conflicts may arise.

--- This discussion is similar to the "free memory at the end of cmd_*" discussion, as it aims to make code reusable, and accepting a minor drawback for it. Typing "the_index" re-enforces the object thinking model and may have people start on thinking if they would like to declare yet another global variable.

Thanks, Stefan

Previous: Junio C HamanoNext: Jeff Hostetler
Message 8 of 25 in “Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROS”
  1. 0/5 Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROSStefan Beller, May 1, 2017
  2. 1/5 cache.h: drop read_cache()Stefan Beller, May 1, 2017
  3. 2/5 cache.h: drop active_* macrosStefan Beller, May 1, 2017
  4. 3/5 cache.h: drop read_cache_fromStefan Beller, May 1, 2017
  5. 4/5 cache.h: drop read_cache_preload(pathspec)Stefan Beller, May 1, 2017
  6. 5/5 cache.h: drop read_cache_unmerged()Stefan Beller, May 1, 2017
  7. Junio C HamanoMay 2, 2017
  8. Stefan BellerMay 2, 2017
  9. Jeff HostetlerMay 2, 2017
  10. Samuel LijinMay 3, 2017
  11. Stefan BellerMay 3, 2017
  12. Samuel LijinMay 3, 2017
  13. Brandon WilliamsMay 4, 2017
  14. Duy NguyenMay 3, 2017
  15. Stefan BellerMay 3, 2017
  16. Junio C HamanoMay 4, 2017
  17. Brandon WilliamsMay 4, 2017
  18. Stefan BellerMay 4, 2017
  19. Johannes SchindelinMay 5, 2017
  20. Brandon WilliamsMay 5, 2017
  21. Jonathan NiederMay 4, 2017
  22. Junio C HamanoMay 5, 2017
  23. Brandon WilliamsMay 5, 2017
  24. Jeff HostetlerMay 2, 2017
  25. Stefan BellerMay 2, 2017

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.