pikeyd165 – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 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 oid> <remote ref> <remote oid> |
||
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 | url="$2" |
||
24 | |||
25 | zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0') |
||
26 | |||
27 | while read local_ref local_oid remote_ref remote_oid |
||
28 | do |
||
29 | if test "$local_oid" = "$zero" |
||
30 | then |
||
31 | # Handle delete |
||
32 | : |
||
33 | else |
||
34 | if test "$remote_oid" = "$zero" |
||
35 | then |
||
36 | # New branch, examine all commits |
||
37 | range="$local_oid" |
||
38 | else |
||
39 | # Update to existing branch, examine new commits |
||
40 | range="$remote_oid..$local_oid" |
||
41 | fi |
||
42 | |||
43 | # Check for WIP commit |
||
44 | commit=$(git rev-list -n 1 --grep '^WIP' "$range") |
||
45 | if test -n "$commit" |
||
46 | then |
||
47 | echo >&2 "Found WIP commit in $local_ref, not pushing" |
||
48 | exit 1 |
||
49 | fi |
||
50 | fi |
||
51 | done |
||
52 | |||
53 | exit 0 |