~ubuntu-branches/ubuntu/oneiric/apex/oneiric

« back to all changes in this revision

Viewing changes to .git/hooks/update

  • Committer: Bazaar Package Importer
  • Author(s): Alexander Sack
  • Date: 2010-01-04 20:24:21 UTC
  • Revision ID: james.westby@ubuntu.com-20100104202421-xv4li9jarzof7mxq
Tags: 1.6.10ubuntu3
* Makefile: fix armel build failures by building with -marm;
  thx to ogra for this patch (LP:503090)
* usr/link.cc: fix "link.cc:236: error: invalid conversion from
  ‘const char*’ to ‘char*’" - use a copy rather than constant to do
  the parsing etc. (LP:503090)

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, make this file executable by "chmod +x 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