mbox series

[0/6] remove USE_THE_INDEX_COMPATIBILITY_MACROS

Message ID cover-0.6-00000000000-20221215T095335Z-avarab@gmail.com (mailing list archive)
Headers show
Series remove USE_THE_INDEX_COMPATIBILITY_MACROS | expand

Message

Ævar Arnfjörð Bjarmason Dec. 15, 2022, 9:58 a.m. UTC
My recent now-landed topic[1] to remove most use of
"USE_THE_INDEX_COMPATIBILITY_MACROS" was merged in 041df69edd3 (Merge
branch 'ab/fewer-the-index-macros', 2022-11-28).

It left out use of the macros that would have conflicted with
in-flight changes, but as those topics have landed we can now complete
the migration.

As before this is almost entirely a matter of applying the existing
"pending" coccinelle rules, the exceptions being 1/6, and the *.h
changes where we remove the macro definitions (the macro users being
edited by coccinelle).

The 4-5/6 then handle some edge cases we had left (but the code change
itself is done by coccinelle).

1. https://lore.kernel.org/git/cover-v2-00.11-00000000000-20221119T125550Z-avarab@gmail.com/

Ævar Arnfjörð Bjarmason (6):
  builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
  cocci & cache.h: fully apply "active_nr" part of index-compatibility
  cocci & cache.h: apply pending "index_cache_pos" rule
  cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
  cache-tree API: remove redundant update_main_cache_tree()
  cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"

 builtin/am.c                                  |  6 ++--
 builtin/commit.c                              | 18 +++++-----
 builtin/merge.c                               |  8 ++---
 builtin/mv.c                                  |  8 +++--
 builtin/rm.c                                  |  2 +-
 builtin/stash.c                               | 11 +++---
 builtin/update-index.c                        |  4 +--
 builtin/write-tree.c                          |  5 +--
 cache-tree.h                                  | 15 --------
 cache.h                                       | 12 +------
 contrib/coccinelle/index-compatibility.cocci  | 36 ++++++++++++++-----
 .../index-compatibility.pending.cocci         | 24 -------------
 12 files changed, 62 insertions(+), 87 deletions(-)
 delete mode 100644 contrib/coccinelle/index-compatibility.pending.cocci

Comments

Phillip Wood Dec. 19, 2022, 2:51 p.m. UTC | #1
Hi Ævar

On 15/12/2022 09:58, Ævar Arnfjörð Bjarmason wrote:
> My recent now-landed topic[1] to remove most use of
> "USE_THE_INDEX_COMPATIBILITY_MACROS" was merged in 041df69edd3 (Merge
> branch 'ab/fewer-the-index-macros', 2022-11-28).
> 
> It left out use of the macros that would have conflicted with
> in-flight changes, but as those topics have landed we can now complete
> the migration.
> 
> As before this is almost entirely a matter of applying the existing
> "pending" coccinelle rules, the exceptions being 1/6, and the *.h
> changes where we remove the macro definitions (the macro users being
> edited by coccinelle).
> 
> The 4-5/6 then handle some edge cases we had left (but the code change
> itself is done by coccinelle).

I've only given these patches a quick scan, but I think they look good. 
None of the callers that are converted here are in library code so using 
the_index makes perfect sense.

Best Wishes

Phillip


> 1. https://lore.kernel.org/git/cover-v2-00.11-00000000000-20221119T125550Z-avarab@gmail.com/
> 
> Ævar Arnfjörð Bjarmason (6):
>    builtin/rm.c: use narrower "USE_THE_INDEX_VARIABLE"
>    cocci & cache.h: fully apply "active_nr" part of index-compatibility
>    cocci & cache.h: apply pending "index_cache_pos" rule
>    cocci & cache-tree.h: migrate "write_cache_as_tree" to "*_index_*"
>    cache-tree API: remove redundant update_main_cache_tree()
>    cocci & cache.h: remove "USE_THE_INDEX_COMPATIBILITY_MACROS"
> 
>   builtin/am.c                                  |  6 ++--
>   builtin/commit.c                              | 18 +++++-----
>   builtin/merge.c                               |  8 ++---
>   builtin/mv.c                                  |  8 +++--
>   builtin/rm.c                                  |  2 +-
>   builtin/stash.c                               | 11 +++---
>   builtin/update-index.c                        |  4 +--
>   builtin/write-tree.c                          |  5 +--
>   cache-tree.h                                  | 15 --------
>   cache.h                                       | 12 +------
>   contrib/coccinelle/index-compatibility.cocci  | 36 ++++++++++++++-----
>   .../index-compatibility.pending.cocci         | 24 -------------
>   12 files changed, 62 insertions(+), 87 deletions(-)
>   delete mode 100644 contrib/coccinelle/index-compatibility.pending.cocci
>
Ævar Arnfjörð Bjarmason Dec. 19, 2022, 3:11 p.m. UTC | #2
On Mon, Dec 19 2022, Phillip Wood wrote:

> Hi Ævar
>
> On 15/12/2022 09:58, Ævar Arnfjörð Bjarmason wrote:
>> My recent now-landed topic[1] to remove most use of
>> "USE_THE_INDEX_COMPATIBILITY_MACROS" was merged in 041df69edd3 (Merge
>> branch 'ab/fewer-the-index-macros', 2022-11-28).
>> It left out use of the macros that would have conflicted with
>> in-flight changes, but as those topics have landed we can now complete
>> the migration.
>> As before this is almost entirely a matter of applying the existing
>> "pending" coccinelle rules, the exceptions being 1/6, and the *.h
>> changes where we remove the macro definitions (the macro users being
>> edited by coccinelle).
>> The 4-5/6 then handle some edge cases we had left (but the code
>> change
>> itself is done by coccinelle).
>
> I've only given these patches a quick scan, but I think they look
> good. None of the callers that are converted here are in library code
> so using the_index makes perfect sense.

Thanks for the review.

That's correct, although even if that were the case that wouldn't be an
issue with this migration, as we'd have been using "the_index" before,
just indirectly through a macro.

That wasn't the case here, but I do I have another similar migration for
migrating "the_repository" wrappers.

In those cases there's surely instances where e.g. we really should be
using a "r" argument instead, but I've opted to leave that question out,
as it would make the coccinelle rules involved & diffs much harder to
deal with.

And because in the end the result is the same if viewed with "cc -E",
i.e. these are just the macro shims we've been meaning to stop using for
a while.
Phillip Wood Dec. 19, 2022, 8:42 p.m. UTC | #3
On 19/12/2022 15:11, Ævar Arnfjörð Bjarmason wrote:
> 
> On Mon, Dec 19 2022, Phillip Wood wrote:
> 
>> Hi Ævar
>>
>> On 15/12/2022 09:58, Ævar Arnfjörð Bjarmason wrote:
>>> My recent now-landed topic[1] to remove most use of
>>> "USE_THE_INDEX_COMPATIBILITY_MACROS" was merged in 041df69edd3 (Merge
>>> branch 'ab/fewer-the-index-macros', 2022-11-28).
>>> It left out use of the macros that would have conflicted with
>>> in-flight changes, but as those topics have landed we can now complete
>>> the migration.
>>> As before this is almost entirely a matter of applying the existing
>>> "pending" coccinelle rules, the exceptions being 1/6, and the *.h
>>> changes where we remove the macro definitions (the macro users being
>>> edited by coccinelle).
>>> The 4-5/6 then handle some edge cases we had left (but the code
>>> change
>>> itself is done by coccinelle).
>>
>> I've only given these patches a quick scan, but I think they look
>> good. None of the callers that are converted here are in library code
>> so using the_index makes perfect sense.
> 
> Thanks for the review.
> 
> That's correct, although even if that were the case that wouldn't be an
> issue with this migration, as we'd have been using "the_index" before,
> just indirectly through a macro.

Indeed, I'm just not convinced that it is worth removing the macro in 
library code without changing to take a struct istate (I don't see the 
existence of the macro itself as a problem as I think it is just a 
symptom of the real problem) but I seem to be in the minority on that point.

Best Wishes

Phillip

> That wasn't the case here, but I do I have another similar migration for
> migrating "the_repository" wrappers.
> 
> In those cases there's surely instances where e.g. we really should be
> using a "r" argument instead, but I've opted to leave that question out,
> as it would make the coccinelle rules involved & diffs much harder to
> deal with.
> 
> And because in the end the result is the same if viewed with "cc -E",
> i.e. these are just the macro shims we've been meaning to stop using for
> a while.
>
Junio C Hamano Dec. 20, 2022, 1:14 a.m. UTC | #4
Phillip Wood <phillip.wood123@gmail.com> writes:

>> That's correct, although even if that were the case that wouldn't
>> be an issue with this migration, as we'd have been using
>> "the_index" before, just indirectly through a macro.
>
> Indeed, I'm just not convinced that it is worth removing the macro in
> library code without changing to take a struct istate (I don't see the
> existence of the macro itself as a problem as I think it is just a
> symptom of the real problem) but I seem to be in the minority on that
> point.

True.

Many subcommands need to deal only with the_index and no other
index, so for the implementations of the top-level subcommands that
work only in a single repository, the macros are not by themselves
problems.  The deeper parts of the system that we want to reuse by
libifying of course eventually need to learn to take an arbitrary
"istate" and NO_THE_INDEX_COMPATIBILITY_MACROS mechanism (and its
successor USE_THE_INDEX_COMPATIBILITY_MACROS, probably) was a great
approach for that goal.
Ævar Arnfjörð Bjarmason Dec. 22, 2022, 9:32 a.m. UTC | #5
On Tue, Dec 20 2022, Junio C Hamano wrote:

> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>>> That's correct, although even if that were the case that wouldn't
>>> be an issue with this migration, as we'd have been using
>>> "the_index" before, just indirectly through a macro.
>>
>> Indeed, I'm just not convinced that it is worth removing the macro in
>> library code without changing to take a struct istate (I don't see the
>> existence of the macro itself as a problem as I think it is just a
>> symptom of the real problem) but I seem to be in the minority on that
>> point.
>
> True.
>
> Many subcommands need to deal only with the_index and no other
> index, so for the implementations of the top-level subcommands that
> work only in a single repository, the macros are not by themselves
> problems.  The deeper parts of the system that we want to reuse by
> libifying of course eventually need to learn to take an arbitrary
> "istate" and NO_THE_INDEX_COMPATIBILITY_MACROS mechanism (and its
> successor USE_THE_INDEX_COMPATIBILITY_MACROS, probably) was a great
> approach for that goal.

I'm not sure what to make of this comment & this series not having been
picked up (perhaps I'm reading too much into that), that you'd like to
keep USE_THE_INDEX_COMPATIBILITY_MACROS?

This side-thread is discussing a theoretical issue.

Phillip was saying (if I understand him correctly) that if we were using
"the_index" in libraries we should fix that, I was agreeing, but saying
that if that were the case this series would still be a good step
forward, we could fix those issues later. It looks like we disagreed on
the "later" part of that.

But in any case, as noted at the start of this thread there are no such
library users, so it's a moot point.