From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Emily Shaffer" <emilyshaffer@google.com>,
"Jeff Hostetler" <jeffhost@microsoft.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Felipe Contreras" <felipe.contreras@gmail.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"René Scharfe" <l.s.r@web.de>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v2 0/3] Add a generated list of hooks in hook-list.h
Date: Tue, 29 Jun 2021 20:53:59 +0200 [thread overview]
Message-ID: <cover-0.3-0000000000-20210629T183325Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-0.3-0000000000-20210617T100239Z-avarab@gmail.com>
A re-roll of this v1[1] to stop hardcoding the hook list, and instead generate it.
The v1 used a Perl script to generate the hook-list.h, it's now a
shellscsript that uses "sed" instead.
The sed script is an adaptation of René's in [2]. I fixed a regression
in it vis-a-vis the Perl version, we need to set LC_ALL so we don't
sort the list at build-time with the locale of the user performing the
build.
I also turned the two sed commands into one, with a trick that's
perhaps too clever, but which has worked in my cross-platform testing
so far.
1. http://lore.kernel.org/git/cover-0.3-0000000000-20210617T100239Z-avarab@gmail.com
2. https://lore.kernel.org/git/648321ed-bda9-d7fc-73e1-7ccf48addf9c@web.de/
Emily Shaffer (1):
hook.c: add a hook_exists() wrapper and use it in bugreport.c
Ævar Arnfjörð Bjarmason (2):
hook.[ch]: move find_hook() to this new library
hook-list.h: add a generated list of hooks, like config-list.h
.gitignore | 1 +
Makefile | 11 +++++-
builtin/am.c | 1 +
builtin/bugreport.c | 46 +++++-----------------
builtin/commit.c | 1 +
builtin/merge.c | 1 +
builtin/receive-pack.c | 1 +
builtin/worktree.c | 1 +
contrib/buildsystems/CMakeLists.txt | 7 ++++
generate-hooklist.sh | 18 +++++++++
hook.c | 61 +++++++++++++++++++++++++++++
hook.h | 16 ++++++++
refs.c | 1 +
run-command.c | 35 +----------------
run-command.h | 7 ----
sequencer.c | 1 +
transport.c | 1 +
17 files changed, 131 insertions(+), 79 deletions(-)
create mode 100755 generate-hooklist.sh
create mode 100644 hook.c
create mode 100644 hook.h
Range-diff against v1:
-: ---------- > 1: 58c37e4f06 hook.[ch]: move find_hook() to this new library
-: ---------- > 2: 0cf7e078ef hook.c: add a hook_exists() wrapper and use it in bugreport.c
1: f343fc7ae6 ! 3: ba7f01f4f6 hook-list.h: add a generated list of hooks, like config-list.h
@@ Commit message
- 976aaedca0 (msvc: add a Makefile target to pre-generate the Visual
Studio solution, 2019-07-29)
+ The LC_ALL=C is needed because at least in my locale the dash ("-") is
+ ignored for the purposes of sorting, which results in a different
+ order. I'm not aware of anything in git that has a hard dependency on
+ the order, but e.g. the bugreport output would end up using whatever
+ locale was in effect when git was compiled.
+
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ Signed-off-by: René Scharfe <l.s.r@web.de>
## .gitignore ##
@@
@@ Makefile: command-list.h: $(wildcard Documentation/git*.txt)
$(patsubst %,--exclude-program %,$(EXCLUDED_PROGRAMS)) \
command-list.txt >$@+ && mv $@+ $@
-+hook-list.h: generate-hooklist.sh
-+hook-list.h: Documentation/githooks.txt
++hook-list.h: generate-hooklist.sh Documentation/githooks.txt
+ $(QUIET_GEN)$(SHELL_PATH) ./generate-hooklist.sh \
+ >$@+ && mv $@+ $@
+
@@ contrib/buildsystems/CMakeLists.txt: if(NOT EXISTS ${CMAKE_BINARY_DIR}/config-li
## generate-hooklist.sh (new) ##
@@
+#!/bin/sh
++#
++# Usage: ./generate-hooklist.sh >hook-list.h
+
-+echo "/* Automatically generated by generate-hooklist.sh */"
++cat <<EOF
++/* Automatically generated by generate-hooklist.sh */
+
-+print_hook_list () {
-+ cat <<EOF
+static const char *hook_name_list[] = {
+EOF
-+ perl -ne '
-+ chomp;
-+ @l[$.] = $_;
-+ push @h => $l[$. - 1] if /^~~~+$/s;
-+ END {
-+ print qq[\t"$_",\n] for sort @h;
-+ }
-+ ' <Documentation/githooks.txt
-+ cat <<EOF
++
++sed -n -e '/^~~~~*$/ {x; s/^.*$/ "&",/; p;}; x' \
++ <Documentation/githooks.txt |
++ LC_ALL=C sort
++
++cat <<EOF
+ NULL,
+};
+EOF
-+}
-+
-+echo
-+print_hook_list
## hook.c ##
@@
--
2.32.0.615.g90fb4d7369
next prev parent reply other threads:[~2021-06-29 18:54 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-17 10:09 [PATCH 0/3] Add a generated list of hooks in hook-list.h Ævar Arnfjörð Bjarmason
2021-06-17 10:09 ` [PATCH 1/3] hook.[ch]: move find_hook() to this new library Ævar Arnfjörð Bjarmason
2021-06-17 10:09 ` [PATCH 2/3] hook.c: add a hook_exists() wrapper and use it in bugreport.c Ævar Arnfjörð Bjarmason
2021-06-17 10:09 ` [PATCH 3/3] hook-list.h: add a generated list of hooks, like config-list.h Ævar Arnfjörð Bjarmason
2021-06-18 17:05 ` SZEDER Gábor
2021-06-18 17:50 ` Eric Sunshine
2021-06-19 6:06 ` Junio C Hamano
2021-06-20 13:53 ` Ævar Arnfjörð Bjarmason
2021-06-20 12:53 ` René Scharfe
2021-06-22 22:32 ` Johannes Schindelin
2021-06-29 0:32 ` Junio C Hamano
2021-06-29 17:53 ` René Scharfe
2021-06-29 18:53 ` Ævar Arnfjörð Bjarmason [this message]
2021-06-29 18:54 ` [PATCH v2 1/3] hook.[ch]: move find_hook() to this new library Ævar Arnfjörð Bjarmason
2021-06-29 18:54 ` [PATCH v2 2/3] hook.c: add a hook_exists() wrapper and use it in bugreport.c Ævar Arnfjörð Bjarmason
2021-06-29 18:54 ` [PATCH v2 3/3] hook-list.h: add a generated list of hooks, like config-list.h Ævar Arnfjörð Bjarmason
2021-06-29 19:45 ` René Scharfe
2021-06-29 22:09 ` Ævar Arnfjörð Bjarmason
2021-07-09 20:29 ` Emily Shaffer
2021-07-10 9:03 ` Ævar Arnfjörð Bjarmason
2021-07-12 20:55 ` Emily Shaffer
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover-0.3-0000000000-20210629T183325Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=emilyshaffer@google.com \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jeffhost@microsoft.com \
--cc=l.s.r@web.de \
--cc=sunshine@sunshineco.com \
--cc=szeder.dev@gmail.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.
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 NNTP newsgroup(s).