[This series does a couple of different things that could be split up, but I thought that it was easier to review it in one piece]. This series changes our tests to not rely on the default template that "git init" populates new repositories with. This reliance hid a bug where a recently added mode of "sparse-checkout" had a hard dependency on git's default template, i.e. it would potentially break on repositories with a custom --template. So this changes all the tests that relied on those, and declares that we'll always create the "info" directory whatever the template says (which will fix that sparse-checkout isssue). We also add a new "git [init|clone] --no-template" option, and make the existing init.templateDir accept "false" as a way of doing what the existing-but-undocumented --template= would do, i.e. use no template at all. I would like to eventually follow-up and make something like init.templateDir=false the default (or at least something closer to it). Notably we litter the rather large sample hooks in every repository ever cloned, but this series doesn't chane anything about what we do by default. This topic was mentioned (item 16) in the recent contributor summit[1]. The notes only reflect that I mentioned .git/branches, but I think it was in reply to someone's question about that or the default templates. 1. https://lore.kernel.org/git/nycvar.QRO.7.76.6.2110211148400.56@xxxxxxxxxxxxxxxxx/ Ævar Arnfjörð Bjarmason (13): t0001: fix gaps in "TEMPLATE DIRECTORY" coverage init: split out template population from create_default_files() init: unconditionally create the "info" directory t0008: don't rely on default ".git/info/exclude" init & clone: add a --no-template option init & clone: add init.templateDir=[bool] test-lib: create test data with "git init --no-template" (almost) tests: don't depend on template-created .git/branches t5540: don't rely on "hook/post-update.sample" test-lib-functions: add and use a "write_hook" wrapper tests: change "cat && chmod +x" to use "write_hook" tests: migrate miscellaneous "write_script" to "write_hooks" tests: don't depend on template-created .git/hooks Documentation/git-clone.txt | 8 +- Documentation/git-init.txt | 31 +++++++- Documentation/gitrepository-layout.txt | 17 ++++- builtin/clone.c | 15 +++- builtin/init-db.c | 75 +++++++++++++------ cache.h | 2 + config.c | 34 +++++++++ config.h | 17 +++++ t/t0001-init.sh | 100 ++++++++++++++++++++++--- t/t0008-ignores.sh | 10 +-- t/t1416-ref-transaction-hooks.sh | 14 ++-- t/t3412-rebase-root.sh | 18 ++--- t/t3413-rebase-hook.sh | 18 ++--- t/t3430-rebase-merges.sh | 5 +- t/t5401-update-hooks.sh | 62 +++++++-------- t/t5402-post-merge-hook.sh | 16 ++-- t/t5406-remote-rejects.sh | 2 +- t/t5407-post-rewrite-hook.sh | 14 ++-- t/t5409-colorize-remote-messages.sh | 2 +- t/t5411-proc-receive-hook.sh | 4 +- t/t5505-remote.sh | 2 + t/t5510-fetch.sh | 6 +- t/t5516-fetch-push.sh | 26 +++---- t/t5521-pull-options.sh | 4 +- t/t5540-http-push-webdav.sh | 4 +- t/t5541-http-push-smart.sh | 4 +- t/t5547-push-quarantine.sh | 4 +- t/t5548-push-porcelain.sh | 2 +- t/t5601-clone.sh | 4 +- t/t6500-gc.sh | 4 +- t/t7450-bad-git-dotfiles.sh | 1 + t/test-lib-functions.sh | 30 ++++++++ t/test-lib.sh | 5 +- wrap-for-bin.sh | 4 +- 34 files changed, 391 insertions(+), 173 deletions(-) -- 2.34.1.1020.gb1392dd1877