~oah-dev/oah/gst-plugins-bad

« back to all changes in this revision

Viewing changes to .git/hooks/update.sample.noexec

  • Committer: Haakon Sporsheim
  • Date: 2009-03-12 13:52:03 UTC
  • Revision ID: haakon.sporsheim@tandberg.com-20090312135203-i5k294hgkushb0mt
Initial import of git repository: git://anongit.freedesktop.org/gstreamer/gst-plugins-bad (tag: RELEASE-0_10_10)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# An example hook script to blocks unannotated tags from entering.
 
4
# Called by git-receive-pack with arguments: refname sha1-old sha1-new
 
5
#
 
6
# To enable this hook, rename this file to "update".
 
7
#
 
8
# Config
 
9
# ------
 
10
# hooks.allowunannotated
 
11
#   This boolean sets whether unannotated tags will be allowed into the
 
12
#   repository.  By default they won't be.
 
13
# hooks.allowdeletetag
 
14
#   This boolean sets whether deleting tags will be allowed in the
 
15
#   repository.  By default they won't be.
 
16
# hooks.allowdeletebranch
 
17
#   This boolean sets whether deleting branches will be allowed in the
 
18
#   repository.  By default they won't be.
 
19
#
 
20
 
 
21
# --- Command line
 
22
refname="$1"
 
23
oldrev="$2"
 
24
newrev="$3"
 
25
 
 
26
# --- Safety check
 
27
if [ -z "$GIT_DIR" ]; then
 
28
        echo "Don't run this script from the command line." >&2
 
29
        echo " (if you want, you could supply GIT_DIR then run" >&2
 
30
        echo "  $0 <ref> <oldrev> <newrev>)" >&2
 
31
        exit 1
 
32
fi
 
33
 
 
34
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
 
35
        echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
 
36
        exit 1
 
37
fi
 
38
 
 
39
# --- Config
 
40
allowunannotated=$(git config --bool hooks.allowunannotated)
 
41
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
 
42
allowdeletetag=$(git config --bool hooks.allowdeletetag)
 
43
 
 
44
# check for no description
 
45
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
 
46
if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb." ]; then
 
47
        echo "*** Project description file hasn't been set" >&2
 
48
        exit 1
 
49
fi
 
50
 
 
51
# --- Check types
 
52
# if $newrev is 0000...0000, it's a commit to delete a ref.
 
53
if [ "$newrev" = "0000000000000000000000000000000000000000" ]; then
 
54
        newrev_type=delete
 
55
else
 
56
        newrev_type=$(git-cat-file -t $newrev)
 
57
fi
 
58
 
 
59
case "$refname","$newrev_type" in
 
60
        refs/tags/*,commit)
 
61
                # un-annotated tag
 
62
                short_refname=${refname##refs/tags/}
 
63
                if [ "$allowunannotated" != "true" ]; then
 
64
                        echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
 
65
                        echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
 
66
                        exit 1
 
67
                fi
 
68
                ;;
 
69
        refs/tags/*,delete)
 
70
                # delete tag
 
71
                if [ "$allowdeletetag" != "true" ]; then
 
72
                        echo "*** Deleting a tag is not allowed in this repository" >&2
 
73
                        exit 1
 
74
                fi
 
75
                ;;
 
76
        refs/tags/*,tag)
 
77
                # annotated tag
 
78
                ;;
 
79
        refs/heads/*,commit)
 
80
                # branch
 
81
                ;;
 
82
        refs/heads/*,delete)
 
83
                # delete branch
 
84
                if [ "$allowdeletebranch" != "true" ]; then
 
85
                        echo "*** Deleting a branch is not allowed in this repository" >&2
 
86
                        exit 1
 
87
                fi
 
88
                ;;
 
89
        refs/remotes/*,commit)
 
90
                # tracking branch
 
91
                ;;
 
92
        refs/remotes/*,delete)
 
93
                # delete tracking branch
 
94
                if [ "$allowdeletebranch" != "true" ]; then
 
95
                        echo "*** Deleting a tracking branch is not allowed in this repository" >&2
 
96
                        exit 1
 
97
                fi
 
98
                ;;
 
99
        *)
 
100
                # Anything else (is there anything else?)
 
101
                echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
 
102
                exit 1
 
103
                ;;
 
104
esac
 
105
 
 
106
# --- Finished
 
107
exit 0