Subject: Re: does a new repo actually *need* default template content?

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Mon, 28 May 2018 19:56:12 +0200

On Mon, May 28 2018, Robert P. J. Day wrote:

>   (apologies for more pedantic nitpickery, just little things i'm
> running across in my travels. aside: i actually teach git courses, so
> it's a bit embarrassing that i don't know some of this stuff. *sigh*.)

Aside from maybe the empty branches/ directory (see c8a58ac5a5 ("Revert
"Don't create the $GIT_DIR/branches directory on init"", 2009-10-31)),
none of this is needed.

I wish we didn't create any of this stuff, but have never been inclined
to make that my hill to die on.

I think we're much better off just shipping e.g. a single README file in
hooks/, or just nothing at all.

We should at least do something different on "git init --bare than" a
plain "git clone". By a quick check I have 20MB worth of 4 thousand
copies of 36 unique variations .git/hooks versions in my local area
where I clone random stuff to, none of which uses any hooks.

I think we shouldn't do anything on --bare either, except maybe a small
README_GIT_REPOSITORY_FORMAT which would refer to
gitrepository-layout(5) and a system-wide template directory.

This might have been more useful back in the early days at a time where
it was common for git users to host their own repositories, but almost
nobody does that anymore, and if they do they're expert level users who
can just get these hooks with a "cp -R".

>   running on fully-updated fedora 28 system:
>
>   $ git --version
>   git version 2.17.0
>   $
>
>   is there anything in /usr/share/git-core/templates/ that is actually
> *essential* when initializing a new repo? this is what's in my
> directory by that name:
>
>   ├── branches
>   ├── description
>   ├── hooks
>   │ ├── applypatch-msg.sample
>   │ ├── commit-msg.sample
>   │ ├── fsmonitor-watchman.sample
>   │ ├── post-update.sample
>   │ ├── pre-applypatch.sample
>   │ ├── pre-commit.sample
>   │ ├── prepare-commit-msg.sample
>   │ ├── pre-push.sample
>   │ ├── pre-rebase.sample
>   │ ├── pre-receive.sample
>   │ └── update.sample
>   └── info
>       └── exclude
>
> but none of that above looks critically important.
>
>   "man gitrepository-layout" describes the "branches" directory as
> "slightly deprecated", the default description file has a generic
> "Unnamed repository" message but, hey, so does the git source code
> repo itself, the hooks are all "commented out", and the info/exclude
> file effectively has no content, so i'm guessing that nothing there
> actually needs to be used to populate a new repo via "git init",
> correct?
>
>   under the circumstances, then, should it be a viable option to
> initialize a new repo while specifying you want *no* initial template
> content? it appears you can do that just by specifying a bogus
> template directory (or even /dev/null) with "--template=", but that
> generates a "warning" -- does a selection like that even merit a
> "warning" if it's clear that's what i'm trying to do?
>
> rday