distgit: Block push of branches named 'origin/*'

We already use the update hook for gitolite.

This introduces a new update hook, which merely chains the gitolite one,
and a new one to block pushes to badly named branches.

The new hook was written originally by Till Maas.

https://fedorahosted.org/rel-eng/ticket/4071
This commit is contained in:
Mathieu Bridon 2014-09-18 16:54:39 +02:00 committed by Pierre-Yves Chibon
parent 57e3254f1a
commit 7ab3ff2817
4 changed files with 34 additions and 2 deletions

View file

@ -108,9 +108,17 @@ git commit -q -m 'Initial setup of the repo' --author "$AUTHOR"
git push -q origin master
popd >/dev/null
# Put our special update hooks in place
ln -s /usr/share/gitolite/hooks/common/update $GITROOT/$PACKAGE.git/hooks/
# Setup our update hooks
mkdir -p $GITROOT/$PACKAGE.git/hooks/update-chained.d
ln -s /usr/share/gitolite/hooks/common/update \
$GITROOT/$PACKAGE.git/hooks/update-chained.d/update-gitolite
ln -s /usr/share/git-core/update-block-push-origin \
$GITROOT/$PACKAGE.git/hooks/update-chained.d/update-block-push-origin
# This one kicks off all the others in update-chained.d
ln -s /usr/share/git-core/update-chained $GITROOT/$PACKAGE.git/hooks/update
# Setup our post-receive hooks
mkdir -p $GITROOT/$PACKAGE.git/hooks/post-receive-chained.d
ln -s /usr/share/git-core/mail-hooks/gnome-post-receive-email \
$GITROOT/$PACKAGE.git/hooks/post-receive-chained.d/post-receive-email

View file

@ -0,0 +1,10 @@
#!/bin/sh
#
# Block pushes to branches if their name starts with `origin/`
# https://fedorahosted.org/rel-eng/ticket/4071
refname="${1}"
sha1_old="${2}"
sha1_new="${3}"
echo "${refname}" | grep -qE '^refs/heads/origin/' && exit 1 || exit 0

View file

@ -0,0 +1,12 @@
#!/bin/bash
refname="${1}"
sha1_old="${2}"
sha1_new="${3}"
$GIT_DIR/hooks/update-chained.d/update-gitolite "$refname" "$sha1_old" "$sha1_new" || exit 1
$GIT_DIR/hooks/update-chained.d/update-block-push-origin "$refname" "$sha1_old" "$sha1_new" || exit 1
exit 0

View file

@ -13,6 +13,8 @@
with_items:
- post-receive-fedmsg
- post-receive-chained
- update-block-push-origin
- update-chained
- name: install the git mail hooks
copy: src={{item}} dest=/usr/share/git-core/mail-hooks mode=0755