Introduce new "tools/" directory

According to its readme, the "contrib/" directory's main intent is to collect stuff that is not an official part of Git, either because it is too specialized or because it is still considered experimental. The reality tells a bit of a different story though: while it _does_ contain such things, it also contains other things: - Our credential helpers, which are being distributed by many packagers nowadays and which can be considered "stable". - A bunch of tooling that relates to our build and test infrastructure. Especially the second category is somewhat of a sore spot. You really wouldn't expect build-related tooling to be considered an optional part of Git. Quite the opposite. Create a new top-level "tools/" directory to fix this discrepancy. This directory will contain all kind of tools that are related to our build infrastructure and that Git developers are likely to use day to day. For now, this directory doesn't contain anything yet except for a readme and a Meson skeleton. This will change in subsequent commits. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Mar 19, 2026 at 06:33 UTC 8872941fd21e2afe37032e7d9beec87b69aca9c9
4 files changed +10
Makefile
+2
@@ -1066,11 +1066,13 @@ SOURCES_CMD = ( \
1066 '*.sh' \
1067 ':!*[tp][0-9][0-9][0-9][0-9]*' \
1068 ':!contrib' \
1069 + ':!tools' \
1070 2>/dev/null || \
1071 $(FIND) . \
1072 \( -name .git -type d -prune \) \
1073 -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \
1074 -o \( -name contrib -type d -prune \) \
1075 + -o \( -name tools -type d -prune \) \
1076 -o \( -name build -type d -prune \) \
1077 -o \( -name .build -type d -prune \) \
1078 -o \( -name 'trash*' -type d -prune \) \
meson.build
+1
@@ -2149,6 +2149,7 @@ else
2149 endif
2150
2151 subdir('contrib')
2152 +subdir('tools')
2153
2154 # Note that the target is intentionally configured after including the
2155 # 'contrib' directory, as some tool there also have their own manpages.
tools/README.md new
+7
@@ -0,0 +1,7 @@
1 +Developer Tooling
2 +-----------------
3 +
4 +This directory is expected to contain all sorts of tooling that
5 +relates to our build infrastructure. This includes scripts and
6 +inputs required by our build systems, but also scripts that
7 +developers are expected to run manually.
tools/meson.build