File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 4242 pre-receive)
4343 while read oldrev newrev refname
4444 do
45- # check for authorization on this repo
46- $GITHOME /receiver " $RECEIVE_REPO " " $newrev " " $RECEIVE_USER " " $RECEIVE_FINGERPRINT "
47- rc=$?
48- if [[ $rc != 0 ]] ; then
49- echo " ERROR: failed on rev $newrev - push denied"
50- exit $rc
51- fi
52- # builder assumes that we are running this script from $GITHOME
53- cd $GITHOME
54- # if we're processing a receive-pack on an existing repo, run a build
55- if [[ $SSH_ORIGINAL_COMMAND == git-receive-pack* ]]; then
56- # SECURITY: git user runs the builder as root (for docker access)
57- sudo $GITHOME /builder $RECEIVE_USER $RECEIVE_REPO $newrev 2>&1 | strip_remote_prefix
45+ LOCKFILE=" /tmp/$RECEIVE_REPO .lock"
46+ if ( set -o noclobber; echo " $$ " > " $LOCKFILE " ) 2> /dev/null; then
47+ trap ' rm -f "$LOCKFILE"; exit $?' INT TERM EXIT
48+
49+ # check for authorization on this repo
50+ $GITHOME /receiver " $RECEIVE_REPO " " $newrev " " $RECEIVE_USER " " $RECEIVE_FINGERPRINT "
51+ rc=$?
52+ if [[ $rc != 0 ]] ; then
53+ echo " ERROR: failed on rev $newrev - push denied"
54+ exit $rc
55+ fi
56+ # builder assumes that we are running this script from $GITHOME
57+ cd $GITHOME
58+ # if we're processing a receive-pack on an existing repo, run a build
59+ if [[ $SSH_ORIGINAL_COMMAND == git-receive-pack* ]]; then
60+ # SECURITY: git user runs the builder as root (for docker access)
61+ sudo $GITHOME /builder $RECEIVE_USER $RECEIVE_REPO $newrev 2>&1 | strip_remote_prefix
62+ fi
63+
64+ rm -f " $LOCKFILE "
65+ trap - INT TERM EXIT
66+ else
67+ echo " Another git push is ongoing. Aborting..."
68+ exit 1
5869 fi
5970 done
6071 ;;
You can’t perform that action at this time.
0 commit comments