1 | #!/bin/sh
|
---|
2 |
|
---|
3 | # An example hook script to verify what is about to be pushed. Called by "git
|
---|
4 | # push" after it has checked the remote status, but before anything has been
|
---|
5 | # pushed. If this script exits with a non-zero status nothing will be pushed.
|
---|
6 | #
|
---|
7 | # This hook is called with the following parameters:
|
---|
8 | #
|
---|
9 | # $1 -- Name of the remote to which the push is being done
|
---|
10 | # $2 -- URL to which the push is being done
|
---|
11 | #
|
---|
12 | # If pushing without using a named remote those arguments will be equal.
|
---|
13 | #
|
---|
14 | # Information about the commits which are being pushed is supplied as lines to
|
---|
15 | # the standard input in the form:
|
---|
16 | #
|
---|
17 | # <local ref> <local sha1> <remote ref> <remote sha1>
|
---|
18 | #
|
---|
19 | # This sample shows how to prevent push of commits where the log message starts
|
---|
20 | # with "WIP" (work in progress).
|
---|
21 |
|
---|
22 | remote="$1"
|
---|
23 | django_origin="origin"
|
---|
24 | if [ "$remote" != "$django_origin" ]
|
---|
25 | then
|
---|
26 | # Not dealing with django-origin, so don't do anythin
|
---|
27 | return 0
|
---|
28 | fi
|
---|
29 | url="$2"
|
---|
30 |
|
---|
31 | z40=0000000000000000000000000000000000000000
|
---|
32 |
|
---|
33 | IFS=' '
|
---|
34 | while read local_ref local_sha remote_ref remote_sha
|
---|
35 | do
|
---|
36 | if [ "$local_sha" = $z40 ]
|
---|
37 | then
|
---|
38 | echo "Seems like a delete of a django-origin branch. Use --no-verify if you really want to do that."
|
---|
39 | exit 1
|
---|
40 | else
|
---|
41 | if [ "$remote_sha" = $z40 ]
|
---|
42 | then
|
---|
43 | # New branch, examine all commits
|
---|
44 | echo "Seems like you are trying to push a new branch to upstream. Use --no-verify if you really want to do that."
|
---|
45 | exit 1
|
---|
46 | fi
|
---|
47 |
|
---|
48 | # Check the range, if it is empty this is likely a force-push (no idea why)
|
---|
49 | commit=`git rev-list "$local_sha" |grep "$remote_sha"`
|
---|
50 | if [ -z "$commit" ]
|
---|
51 | then
|
---|
52 | echo "This seems like force-push to upstream. Use --no-verify if you really want to do that. HINT: you don't!"
|
---|
53 | exit 1
|
---|
54 | fi
|
---|
55 | fi
|
---|
56 | done
|
---|
57 |
|
---|
58 | exit 0
|
---|