
When we install Git we also install a set of default templates that both git-init(1) and git-clone(1) populate into our build directories. The way the pristine templates are laid out in our source directory is somewhat weird though: instead of reconstructing the actual directory hierarchy in "templates/", we represent directory separators with "--". The only reason I could come up with for why we have this is the "branches/" directory, which is supposed to be empty when installing it. And as Git famously doesn't store empty directories at all we have to work around this limitation. Now the thing is that the "branches/" directory is a leftover to how branches used to be stored in the dark ages. gitrepository-layout(5) lists this directory as "slightly deprecated", which I would claim is a strong understatement. I have never encountered anybody using it today and would be surprised if it even works as expected. So having the "--" hack in place for an item that is basically unused, unmaintained and deprecated doesn't only feel unreasonable, but installing that entry by default may also cause confusion for users that do not know what this is supposed to be in the first place. Remove this directory from our templates and, now that we do not require the workaround anymore, restructure the templates to form a proper hierarchy. This makes it way easier for build systems to install these templates into place. We should likely think about removing support for "branch/" altogether, but that is outside of the scope of this patch series. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
76 lines
2.1 KiB
Makefile
76 lines
2.1 KiB
Makefile
# Import tree-wide shared Makefile behavior and libraries
|
|
include ../shared.mak
|
|
|
|
# make and install sample templates
|
|
INSTALL ?= install
|
|
TAR ?= tar
|
|
RM ?= rm -f
|
|
prefix ?= $(HOME)
|
|
template_instdir ?= $(prefix)/share/git-core/templates
|
|
# DESTDIR=
|
|
|
|
ifndef SHELL_PATH
|
|
SHELL_PATH = /bin/sh
|
|
endif
|
|
ifndef PERL_PATH
|
|
PERL_PATH = perl
|
|
endif
|
|
|
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
|
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
|
|
|
|
# Shell quote (do not use $(call) to accommodate ancient setups);
|
|
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
|
|
template_instdir_SQ = $(subst ','\'',$(template_instdir))
|
|
|
|
all: boilerplates.made custom
|
|
|
|
# Put templates that can be copied straight from the source
|
|
# in a file direc--tory--file in the source. They will be
|
|
# just copied to the destination.
|
|
|
|
TEMPLATES =
|
|
TEMPLATES += description
|
|
TEMPLATES += hooks/applypatch-msg.sample
|
|
TEMPLATES += hooks/commit-msg.sample
|
|
TEMPLATES += hooks/fsmonitor-watchman.sample
|
|
TEMPLATES += hooks/post-update.sample
|
|
TEMPLATES += hooks/pre-applypatch.sample
|
|
TEMPLATES += hooks/pre-commit.sample
|
|
TEMPLATES += hooks/pre-merge-commit.sample
|
|
TEMPLATES += hooks/prepare-commit-msg.sample
|
|
TEMPLATES += hooks/pre-push.sample
|
|
TEMPLATES += hooks/pre-rebase.sample
|
|
TEMPLATES += hooks/pre-receive.sample
|
|
TEMPLATES += hooks/push-to-checkout.sample
|
|
TEMPLATES += hooks/sendemail-validate.sample
|
|
TEMPLATES += hooks/update.sample
|
|
TEMPLATES += info/exclude
|
|
|
|
boilerplates.made: $(TEMPLATES)
|
|
$(QUIET)umask 022 && for template in $(TEMPLATES); \
|
|
do \
|
|
dir=$$(dirname "$$template") && \
|
|
mkdir -p blt/$$dir && \
|
|
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
|
|
-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
|
|
-e 's|@PERL_PATH@|$(PERL_PATH_SQ)|g' $$template > \
|
|
blt/$$template && \
|
|
if test -x "$$template"; then rx=rx; else rx=r; fi && \
|
|
chmod a+$$rx "blt/$$template" || exit; \
|
|
done && \
|
|
date >$@
|
|
|
|
# If you need build-tailored templates, build them into blt/
|
|
# directory yourself here.
|
|
custom:
|
|
$(QUIET): no custom templates yet
|
|
|
|
clean:
|
|
$(RM) -r blt boilerplates.made
|
|
|
|
install: all
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(template_instdir_SQ)'
|
|
(cd blt && $(TAR) cf - .) | \
|
|
(cd '$(DESTDIR_SQ)$(template_instdir_SQ)' && umask 022 && $(TAR) xof -)
|