2011-06-17 49 views
13

私はチームがコミットを公開(プッシュ)するための中央の裸のリポジトリを持っています。 このメインリポジトリで、タグの削除と名前の変更を無効にします。タグの削除を無効にする

フックなどのソリューションはありますか?

答えて

18

git help hooksには、フックに関するドキュメントが含まれています。 updateフックは、Gitが参照を作成/移動/削除しようとしているときに呼び出されます。更新される度リファレンスあたりと呼ばれ、与えられます。

  • 第一引数:参照名(例えば、引用文献/タグ/ v1.0の)
  • 第2引数:オブジェクトのSHA1参照現在のポイント(参照が現在存在しない場合はすべてゼロ)
  • 第3引数:参照先を指定するオブジェクトのSHA1(参照を削除する場合はすべてゼロ)。

終了コードが0以外の場合、gitは参照を更新せず、エラーが発生します。

#!/bin/sh 

log() { printf '%s\n' "$*"; } 
error() { log "ERROR: $*" >&2; } 
fatal() { error "$*"; exit 1; } 

case $1 in 
    refs/tags/*) 
     [ "$3" != 0000000000000000000000000000000000000000 ] \ 
      || fatal "you're not allowed to delete tags" 
     [ "$2" = 0000000000000000000000000000000000000000 ] \ 
      || fatal "you're not allowed to move tags" 
     ;; 
esac 
+1

あなたはドキュメントにリンクしたり、これは統合する方法についての詳細を説明することがあります:

だからあなたの特定の問題に対処するために、あなたはあなたのupdateフックに以下を追加することができます。 – Daenyth

+0

@Daenyth:更新済み、ありがとう! –

+0

もっとうれしい、+1! – Daenyth

関連する問題