From: Heiko Voigt Date: Mon, 23 Feb 2009 18:41:23 GMT Subject: Re: [RFC PATCH] hooks: add some defaults to support sane workflow to pre-commit Message-ID: <49A2EDD3.5080307@hvoigt.net> In-Reply-To: <49A00215.9070106@hvoigt.net> 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