git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Duy Nguyen <pclouds@gmail.com>
To: Johan Herland <johan@herland.net>
Cc: Jeff King <peff@peff.net>,
	Michael Haggerty <mhagger@alum.mit.edu>,
	Josh Triplett <josh@joshtriplett.org>,
	Git mailing list <git@vger.kernel.org>,
	Dan Carpenter <dan.carpenter@oracle.com>,
	Greg KH <greg@kroah.com>,
	Linux Kernel mailing list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line
Date: Thu, 31 Oct 2013 13:28:44 +0700	[thread overview]
Message-ID: <CACsJy8DVSpmmDw-jGJoJK171u5UeJR7GKPuX7QAK4=7yYn6n8Q@mail.gmail.com> (raw)
In-Reply-To: <CALKQrge8T8R7roUUYyLcu_QnL1afeqTATOp+0n_OOsZZoJXF4Q@mail.gmail.com>

On Thu, Oct 31, 2013 at 1:12 AM, Johan Herland <johan@herland.net> wrote:
> Yes, we do lack a good infrastructure for managing Git hooks from
> multiple sources. It makes people afraid to use them, because they
> might conflict with hooks from another source. There are (off the top
> of my head):
>
>  - "personal" hooks ("I want this behaviour in my repo(s)")
>  - "project" hooks ("In this project we follow these conventions")
>  - "system" hooks ("This host runs gitolite (or whatever) which needs
> these hooks...")
>  - "default" hooks (Some of the core Git code could have be
> implemented as hooks (e.g. "--signoff"), but is instead put into core
> Git)
>
> Maybe if we solved that problem, we could actually make use of hooks
> instead of adding "code" to our git configs (by which I mean config
> directives that are flexible enough to encode all kinds of semantics
> and behaviors that are probably better expressed in real code...).

OK how about, if $GIT_DIR/hooks/something is a directory, then the
directory must contain a file named "index", listing all the hooks of
type "something". All the hooks in "index" will be executed in the
listing order. There could be directories inside .git/hooks/something
to help categorize the scripts, so project hooks stay in "project"
subdirectory and so on.

With this we could provide "git hook" command to manipulate hooks and
test out the new combination of hooks. We could even select what
scripts not to run for a particular run, say you don't want the s-o-b
hook active when you commit this thing, you could run

  git commit --exclude-hooks=pre-commit-msg/s-o-b

You could exclude hooks by pattern as well

  git commit --exclude-hooks="pre-commit-msg/projects/*"

Or run an unsinstalled hook just one time

  git commit --include-hooks=/path/to/my/hook

Hooks like "Fixes" may need input from the user. The hook could bail
out if the required input is not given. But it maybe a good idea for
git to check and reject before running hooks, if the input is not
specified (e.g. from command line). I guess those extra info has to be
in .git/config and be added to .git/config by "git hook" command,
unless we have some convention to express those without running the hook.

For old Git versions that does not support this scheme, as directories
usually have u+x, the hook directory should be mistaken as an
executable and rejected when executed (permission denied in my test),
which gives user a good warning that this repo should not be used with
this git version.
-- 
Duy

  reply	other threads:[~2013-10-31  6:29 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20131024122255.GI9378@mwanda>
     [not found] ` <20131024122512.GB9534@mwanda>
     [not found]   ` <20131026181709.GB10488@kroah.com>
2013-10-27  1:34     ` [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line Josh Triplett
2013-10-27  5:42       ` Michael Haggerty
2013-10-27  6:37         ` Theodore Ts'o
2013-10-27  7:14         ` Josh Triplett
2013-10-27  8:03           ` [Ksummit-2013-discuss] " Michel Lespinasse
2013-10-27  9:23             ` Josh Triplett
2013-10-27  8:09           ` Thomas Rast
2013-10-27  9:20             ` Josh Triplett
2013-10-27 10:59               ` Johan Herland
2013-10-27 19:10                 ` Christian Couder
2013-10-28  2:46                   ` Johan Herland
2013-10-28 22:10                     ` Thomas Rast
2013-10-29  2:02                       ` Jeff King
2013-10-30 17:53                       ` Johan Herland
2013-10-29  6:23                     ` Christian Couder
2013-10-30 19:07                       ` Johan Herland
2013-11-02 12:54                         ` Christian Couder
2013-10-27  9:26             ` Stefan Beller
2013-10-27 16:30               ` Thomas Rast
2013-10-27 17:03                 ` Stefan Beller
2013-10-31 23:03                 ` Stefan Beller
2013-10-31 23:04                   ` [PATCH] Documentation: add a script to generate a (long/short) options overview Stefan Beller
2013-10-31 23:09                     ` Stefan Beller
2013-10-31 23:45                       ` brian m. carlson
2013-11-01  0:09                         ` Junio C Hamano
2013-10-28  9:02           ` [PATCH] commit: Add -f, --fixes <commit> option to add Fixes: line Michael Haggerty
2013-10-28 11:29             ` Johan Herland
2013-10-29  2:08               ` Jeff King
2013-10-29  8:26                 ` Matthieu Moy
2013-10-30 18:12                 ` Johan Herland
2013-10-31  6:28                   ` Duy Nguyen [this message]
2013-10-31 17:20                     ` Junio C Hamano
2013-10-31 23:52                       ` Duy Nguyen
2013-11-01  0:16                       ` Johan Herland
2013-10-27  8:33       ` Duy Nguyen
2013-10-27  9:13         ` Josh Triplett
2013-10-28  0:49       ` Jim Hill
2013-10-28  1:52       ` Junio C Hamano
2013-10-28  7:16         ` Josh Triplett
2013-10-28  8:27           ` Michael Haggerty
2013-10-28  8:59           ` [ksummit-attendees] " Christoph Hellwig
2013-10-28 23:09             ` Benjamin Herrenschmidt
2013-10-28 23:38               ` Russell King - ARM Linux
2013-10-28 23:41               ` Russell King - ARM Linux
2013-10-28  9:08         ` Junio C Hamano
2013-10-29  4:45           ` Christian Couder
2013-10-29 19:54             ` Junio C Hamano
2013-10-30 17:28       ` Tony Luck
2013-10-30 18:33         ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACsJy8DVSpmmDw-jGJoJK171u5UeJR7GKPuX7QAK4=7yYn6n8Q@mail.gmail.com' \
    --to=pclouds@gmail.com \
    --cc=dan.carpenter@oracle.com \
    --cc=git@vger.kernel.org \
    --cc=greg@kroah.com \
    --cc=johan@herland.net \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhagger@alum.mit.edu \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).