threads / discuss / 48586

why does builtin/init-db.c mention "/etc/core-git/templates/hooks/update"?

Subject: why does builtin/init-db.c mention "/etc/core-git/templates/hooks/update"?

## tl;dr

3 messages between May 28, 2018 and May 28, 2018.

replies: 2people: 2as markdown or json

Robert P. J. Day· May 28, 2018, 13:27 UTC · lore
  just noticed this in builtin/init-db.c:
... snip ...
#ifndef DEFAULT_GIT_TEMPLATE_DIR
#define DEFAULT_GIT_TEMPLATE_DIR "/usr/share/git-core/templates"
#endif
... snip ...
static void copy_templates_1(struct strbuf *path, struct strbuf *template_path,
                             DIR *dir)
{
        size_t path_baselen = path->len;
        size_t template_baselen = template_path->len;
        struct dirent *de;
        /* Note: if ".git/hooks" file exists in the repository being
         * re-initialized, /etc/core-git/templates/hooks/update would
         * cause "git init" to fail here.  I think this is sane but
         * it means that the set of templates we ship by default, along
         * with the way the namespace under .git/ is organized, should
         * be really carefully chosen.
         */
... snip ...
  should the reference to /etc/core-git/templates/hooks/update instead
refer to the directory /usr/share/git-core/templates/..., given the
default directory defined just a few lines above it? (there is no such
directory, /etc/core-git/, on my system.)
  more to the point, is that actually what the "update" hook does? i
just looked at the shipped sample, "update.sample", and it seems to be
related to tags:
  #!/bin/sh
  #
  # An example hook script to block unannotated tags from entering.
  # Called by "git receive-pack" with arguments: refname sha1-old sha1-new
  #
  # To enable this hook, rename this file to "update".
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Sitaram Chamarty· May 28, 2018, 13:59 UTC · re: Robert P. J. Day · lore

Re: why does builtin/init-db.c mention "/etc/core-git/templates/hooks/update"?

On Mon, May 28, 2018 at 09:27:18AM -0400, Robert P. J. Day wrote:
[snipped the rest because I really don't know]
Show 7 quoted lines
>   more to the point, is that actually what the "update" hook does? i
> just looked at the shipped sample, "update.sample", and it seems to be
> related to tags:
> 
>   #!/bin/sh
>   #
>   # An example hook script to block unannotated tags from entering.

no that's just a sample. An update hook can do pretty much anything, and if it exits with 0 status code, the actual update succeeds. If it exists with any non-zero exit code, the update will fail.

This is (usually) the basis for a lot of checks that people may want, from commit message format to access control at the ref (branch/tag) level for write operations.

Robert P. J. Day· May 28, 2018, 14:09 UTC · re: Sitaram Chamarty · lore

Re: why does builtin/init-db.c mention "/etc/core-git/templates/hooks/update"?

On Mon, 28 May 2018, Sitaram Chamarty wrote:
Show 20 quoted lines
> On Mon, May 28, 2018 at 09:27:18AM -0400, Robert P. J. Day wrote:
>
> [snipped the rest because I really don't know]
>
> >   more to the point, is that actually what the "update" hook does? i
> > just looked at the shipped sample, "update.sample", and it seems to be
> > related to tags:
> >
> >   #!/bin/sh
> >   #
> >   # An example hook script to block unannotated tags from entering.
>
> no that's just a sample.  An update hook can do pretty much
> anything, and if it exits with 0 status code, the actual update
> succeeds.  If it exists with any non-zero exit code, the update will
> fail.
>
> This is (usually) the basis for a lot of checks that people may
> want, from commit message format to access control at the ref
> (branch/tag) level for write operations.
  i'm not convinced that that reference is "just a sample." the
comment in builtin/init-db.c reads:
  /* Note: if ".git/hooks" file exists in the repository being
   * re-initialized, /etc/core-git/templates/hooks/update would
   * cause "git init" to fail here...

the reference to "/etc/core-git/templates/hooks/update" might lead some people to believe that that somehow refers to the "update.sample" hook that comes with a new repo, but that hook is specifically related to git-receive-pack, and has nothing to do with re-initalizing a repo, AFAICT.

  i'm just suggesting that that comment in buildin/init-db.c seems
more than a little inaccurate.
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

← back to recent threads