git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Add support in sample hook script for denying annotated tags.
@ 2010-10-31 19:57 Boyd Stephen Smith Jr.
  2010-10-31 20:24 ` Jonathan Nieder
  0 siblings, 1 reply; 3+ messages in thread
From: Boyd Stephen Smith Jr. @ 2010-10-31 19:57 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: Text/Plain, Size: 2278 bytes --]

Signed-off-by: "Boyd Stephen Smith Jr." <bss@iguanasuicide.net>
---
 templates/hooks--update.sample |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

In one project I'm in we are using a centralized Git repository that many 
developers have access to.  As such, we want to prevent tags from being 
created by push operations and have them created by the administrators.

This is a modification to the sample update hook to allow this to simply be 
a configuration option.

receive.denyCreate actually seems to be what my project wants, but I can see 
more fine-grained support being nice-to-have.  For example, we might want 
to allow developers to create branches in a developer-specific namespace 
but still disallow pushing annotated tags.

diff --git a/templates/hooks--update.sample b/templates/hooks--update.sample
index fd63b2d..c783973 100755
--- a/templates/hooks--update.sample
+++ b/templates/hooks--update.sample
@@ -7,6 +7,9 @@
 #
 # Config
 # ------
+# hooks.allowannotated
+#   This boolean sets whether annotated tags will be allowed into the
+#   repository.  By default they won't be.
 # hooks.allowunannotated
 #   This boolean sets whether unannotated tags will be allowed into the
 #   repository.  By default they won't be.
@@ -43,6 +46,7 @@ if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
 fi
 
 # --- Config
+allowannotated=$(git config --bool hooks.allowannotated)
 allowunannotated=$(git config --bool hooks.allowunannotated)
 allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
 denycreatebranch=$(git config --bool hooks.denycreatebranch)
@@ -86,6 +90,11 @@ case "$refname","$newrev_type" in
 		;;
 	refs/tags/*,tag)
 		# annotated tag
+		if [ "$oldrev" = "$zero" -a "$allowannotated" != "true" ]; then
+			echo "*** Creating a tag is not allowed in this repository" >&2
+			exit 1
+		fi
+
 		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
 		then
 			echo "*** Tag '$refname' already exists." >&2
-- 
1.7.1
-- 
Boyd Stephen Smith Jr.                   ,= ,-_-. =.
bss@iguanasuicide.net                   ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy         `-'(. .)`-'
http://iguanasuicide.net/                    \_/

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-11-01  7:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-31 19:57 [PATCH] Add support in sample hook script for denying annotated tags Boyd Stephen Smith Jr.
2010-10-31 20:24 ` Jonathan Nieder
2010-11-01  7:29   ` Boyd Stephen Smith Jr.

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).