git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
May 28, 2018, 17:56 UTC
Message-ID
<87h8mr7jgj.fsf@evledraar.gmail.com>
In-Reply-To
<alpine.LFD.2.21.1805280836140.10191@localhost.localdomain>
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".

Show 45 quoted lines
>   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
Previous: Robert P. J. DayNext: Jeff King
Message 2 of 4 in “does a new repo actually *need* default template content?”
  1. Robert P. J. DayMay 28, 2018
  2. Ævar Arnfjörð BjarmasonMay 28, 2018
  3. Jeff KingJun 1, 2018
  4. Santiago TorresJun 1, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.