[Kde-scm-interest] Post-commit hooks script
Johannes Sixt
j.sixt at viscovery.net
Thu Dec 3 13:02:59 CET 2009
Jean-Nicolas Artaud schrieb:
> * BUG/CCMAIL
> * email/CIA
These are only notifications, but you can use the post-update hook only if
reflogs are enabled on the server (I do not know whether this is the case
on gitorious) because you have to find out the old value of the updated
branch (that would be branchname@{1}).
> * license header checks
Strictly speaking, this is a verification, and should actually be a
pre-commit hook that prevents that wrong headers enter the repository in
the first place. But you cannot force users to enable the hook...
> Another thing is *necessary* for me is to have an example of a post-update
> hook script because I cannot imagine what parameters are necessary for this.
It would go like this:
---- 8< ------
#!/bin/sh
treat_ref()
{
old=$1@{1} # this assumes that reflogs are available!
new=$1
for cmt in $(git rev-list $old..$new); do
# investigate commit message
git cat-file commit $cmt |
while read line; do
case $line in
CCMAIL:*)
...
;;
BUG:*)
...
;;
esac
done
# investigate added files (but skip merges)
git rev-parse --verify --quiet $cmt^2 -- ||
git diff-tree --name-only --diff-filter=A -r $cmt^..$cmt -- |
while read file; do
# check license header
git cat-file blob "$cmt:$file" | ...
done
done
}
for ref
do
case $ref in
refs/heads/*)
treat_ref "$ref"
esac
done
exit 0
---- 8< ------
-- Hannes
More information about the Kde-scm-interest
mailing list