Thread (34 messages) flat view 34 messages, 5 authors, 2021-11-17

Re: [PATCH v2 0/8] Makefile: generate a hook-list.h, prep for config-based-hooks

From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-09-27 10:52:19

On Mon, Sep 27 2021, Phillip Wood wrote:
On 26/09/2021 20:03, Ævar Arnfjörð Bjarmason wrote:
quoted
This series is an incremental restart of the now-ejected
es/config-based-hooks and ab/config-based-hooks-base topics. See [1]
for a summary of the plan and progression.
In v2 the "sed" invocation that generates the new hook-list.h has
been
changed to be portable under POSIX. See the thread starting at
https://lore.kernel.org/git/92471ff9-7573-c3e4-e9fd-63a5cbf5738f@gmail.com/ (local);
The portability issue is AFAICT theoretical in that any "sed"
command
I've tried accepts the old version (I tried the large list of OS's
listed in [2]), but better safe than sorry.
Other changes:
  * I noticed that the run-command.h inclusion in transport.c become
    redundant, I removed that and validated the other ones that have
    the new hook.h, they all still need run-command.h.
  * A whitespace change in v1 in a change to the Makefile makes the
    diff for 8/8 easier to read.
1. http://lore.kernel.org/git/cover-0.8-00000000000-20210923T095326Z-avarab@gmail.com (local)
2. https://lore.kernel.org/git/87fstt3gzd.fsf@evledraar.gmail.com/ (local)
[...]
8:  80aae4d5c13 ! 8:  7420267ce09 hook-list.h: add a generated list of hooks, like config-list.h
     @@ Makefile: XDIFF_LIB = xdiff/lib.a
       generated-hdrs: $(GENERATED_H)
             @@ Makefile: git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS)
$(GITLIBS)
     + 		$(filter %.o,$^) $(LIBS)
              help.sp help.s help.o: command-list.h
     ++hook.sp hook.s hook.o: hook-list.h
             -builtin/help.sp builtin/help.s builtin/help.o:
config-list.h GIT-PREFIX
     -+hook.sp hook.s hook.o: hook-list.h
     -+
      +builtin/help.sp builtin/help.s builtin/help.o: config-list.h hook-list.h GIT-PREFIX
This is billed as a whitespace change above but this line has actually
changed since the last version - was that intentional?
I think you're mistaken here, it is a whitespace-only change to the
end-state, but the diff and range-diff are confusing. If I diff the two
Makefiles I end up with when applying v1 and v2 I get:
@@ -2217,7 +2210,6 @@ git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)
 		$(filter %.o,$^) $(LIBS)
 
 help.sp help.s help.o: command-list.h
-
 hook.sp hook.s hook.o: hook-list.h
 
 builtin/help.sp builtin/help.s builtin/help.o: config-list.h hook-list.h GIT-PREFIX
I.e. only the line between the old command-list.h and new hook-list.h
line is gone.

But the diff for v1 is D/A/A/A and for v2 A/D/A (D = Deletion, A =
Addition).

I.e. it's one of those times when "git diff" produces a valid diff, and
one that's actually smaller than couldu have been produced with a
v2-like diff given the change in v1.

As an aside I've sometimes wished we had a --diff-algorithm=maximal or
something, i.e. there's a lot of cases where by just adding one line to
the diff you can produce a bigger but IMO less confusing one.

In any case, the end state looks better & the diff for v2 is more
intuitive to look at.
quoted
       builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \
       	'-DGIT_HTML_PATH="$(htmldir_relative_SQ)"' \
     @@ generate-hooklist.sh (new)
      +static const char *hook_name_list[] = {
      +EOF
      +
     -+sed -n -e '/^~~~~*$/ {x; s/^.*$/	"&",/; p;}; x' \
     ++sed -n \
     ++	-e '/^~~~~*$/ {x; s/^.*$/	"&",/; p;}' \
     ++	-e 'x' \
      +	<Documentation/githooks.txt |
      +	LC_ALL=C sort
      +
The sed change looks good
Thanks for confirming.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help