Subject: Re: [RFC PATCH] hooks: add some defaults to support sane workflow to pre-commit

From: Heiko Voigt <[email-masked]>
Date: Mon, 23 Feb 2009 19:41:23 +0100

Heiko Voigt schrieb:
> How about combining my first approach with the second idea? Teach git
> different default sets of hooks. So something like:
> 
>    git init --workflow="topic-branches"
> 
> would initialize and install a certain set of hooks.
> 
> Implement the possibility to propagate this setting to the server, by
> using a config variable or similar. This way only secure hooks will
> automatically be inherited and the user has the benefit of a more
> specific workflow support.

So I have been thinking about an actual implementation lately and here are
some more specifics of a possible implementation:

Add a new configuration file .gitconfig tracked in the working copy next to
.gitignore and such. The order would then be: 

/etc/gitconfig
~/.gitconfig
$project/.gitconfig
$project/.git/config 

Do not allow all options in such a file but use a specific namespace for
whitelisting them e.g.: project.workflow

Add hooks that are activated by default and use these configuration
variables to tune their behaviour. Example: 

[ "$(git config project.workflow)" = "topic-branches" ] && topic_branches=1

# if we are in topic mode work should always be done on a feature branch
if topic_branches && git branch | grep "^* master" > /dev/null; then
    echo "No commits on master, please !"
    exit 1
fi

Such distributable options could also transport other values like the
description for gitweb.

What do you think?

cheers Heiko