From: Junio C Hamano <gitster@pobox.com>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: Duy Nguyen <pclouds@gmail.com>,
Stefan Beller <sbeller@google.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH 0/5] Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROS
Date: Fri, 05 May 2017 10:22:21 -0700 [thread overview]
Message-ID: <xmqq8tmb8bhu.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20170504191927.GB15203@aiede.svl.corp.google.com> (Jonathan Nieder's message of "Thu, 4 May 2017 12:19:27 -0700")
Jonathan Nieder <jrnieder@gmail.com> writes:
> That is, one way to do what this series attempts would be the
> following:
>
> 1. rename variables that shadow the_index.
No question about this one. It is a good thing to do.
> 2. add coccinelle patches (or one coccinelle patch) to
> contrib/coccinelle implementing *_cache -> *_index migration.
> Is there a way to do this without making it fail "make coccicheck"?
Quite honestly, I do not see much value in this, but take it merely
as my knee-jerk reaction. The only scenario I can think of in which
dropping *_cache() macros is an improvement as the end result is
when our goal is to completely drop the singleton index_state
instance, aka "the_index". I actually think that it may be a
worthwhile goal to eradicate "the_index".
I wonder if somebody can take a small example codepath and make it
not to rely on the existence of "the_index" from start to end? Have
an instance of index_state on the stack of cmd_foo(), have it call
read_index() into it where it currently calls read_cache(), update
the support functions it calls so that it can pass the pointer to
its index_info throughout the callchain, and see how involved the
necessary changes of all of the above are. Start from something
simple and small, e.g. "ls-files". The infrastructure code updated
for such an experiment may be NO_THE_INDEX_COMPATIBILITY_MACROS
clean.
Perhaps we can remove the existence of the_index from the system by
going that route; needless to say, when that goal is achieved, by
definition *_cache() macros will be completely useless and must be
removed, as there is nobody who relies on the existence of and who
uses "the_index".
> 3. migrate library code (but not builtins) using that semantic patch
I do think this is going backwards. The only thinng replacing
*_cache() to *_index(&the_index) buys you is newbies not having to
know both, but instead they will be exposed to the pattern of
repeated use of *_index(&the_index); i.e. reliance of the existence
of the singleton "the_index" is not reduced, but is stressed which
is a big downside when we are trying to eventually get rid of it.
Also quite honestly, I do not think we want newbies to be touching
the things that needs *_index() interface while this update is going
on.
The remainder of your enumeration goes in a direction different from
getting rid of the_index, so I do not know---I wrote the above under
the assumption that the total removal of "the_index" might be a good
thing to do, and where that assumption would lead us to (e.g. an
obvious side-effect of no longer having the_index is that *_cache()
macros cannot exist), and I am undecided if the assumption is a good
one (yet).
next prev parent reply other threads:[~2017-05-05 17:22 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-01 19:07 [PATCH 0/5] Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROS Stefan Beller
2017-05-01 19:07 ` [PATCH 1/5] cache.h: drop read_cache() Stefan Beller
2017-05-01 19:07 ` [PATCH 2/5] cache.h: drop active_* macros Stefan Beller
2017-05-01 19:07 ` [PATCH 3/5] cache.h: drop read_cache_from Stefan Beller
2017-05-01 19:07 ` [PATCH 4/5] cache.h: drop read_cache_preload(pathspec) Stefan Beller
2017-05-01 19:07 ` [PATCH 5/5] cache.h: drop read_cache_unmerged() Stefan Beller
2017-05-02 1:36 ` [PATCH 0/5] Start of a journey: drop NO_THE_INDEX_COMPATIBILITY_MACROS Junio C Hamano
2017-05-02 4:17 ` Stefan Beller
2017-05-02 14:05 ` Jeff Hostetler
2017-05-03 11:31 ` Samuel Lijin
2017-05-03 17:14 ` Stefan Beller
2017-05-03 18:22 ` Samuel Lijin
2017-05-04 3:29 ` Brandon Williams
2017-05-03 10:27 ` Duy Nguyen
2017-05-03 17:02 ` Stefan Beller
2017-05-04 2:48 ` Junio C Hamano
2017-05-04 3:24 ` Brandon Williams
2017-05-04 18:30 ` Stefan Beller
2017-05-05 14:31 ` Johannes Schindelin
2017-05-05 17:20 ` Brandon Williams
2017-05-04 19:19 ` Jonathan Nieder
2017-05-05 17:22 ` Junio C Hamano [this message]
2017-05-05 17:29 ` Brandon Williams
2017-05-02 15:35 ` Jeff Hostetler
2017-05-02 17:06 ` Stefan Beller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq8tmb8bhu.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=jrnieder@gmail.com \
--cc=pclouds@gmail.com \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).