2011-06-17 14 views
13

मेरे पास एक केंद्रीय नंगे भंडार है जिसमें एक टीम अपने काम को प्रकाशित (धक्का) देती है। इस मुख्य भंडार में, मैं टैग हटाने और नामकरण को अक्षम करना चाहता हूं।टैग हटाने को अक्षम करें

क्या कोई हुक या कुछ ऐसा समाधान है?

उत्तर

18

git help hooks में हुक के बारे में दस्तावेज़ शामिल हैं। update हुक तब लागू होता है जब गिट एक संदर्भ बनाने/स्थानांतरित/हटाने/हटाने के बारे में है। संदर्भ प्रति एक बार अपडेट करना यह कहा जाता है, और दिया जाता है:

  • 1 तर्क: संदर्भ नाम (जैसे, refs/टैग/v1.0)
  • 2 तर्क: वस्तु के SHA1 जहां संदर्भ वर्तमान में अंक (सभी शून्य यदि संदर्भ वर्तमान में मौजूद नहीं है)
  • तीसरा तर्क: उस ऑब्जेक्ट का SHA1 जहां उपयोगकर्ता संदर्भ बिंदु चाहता है (संदर्भ शून्य होने पर सभी शून्य)।

यदि हुक गैर-शून्य निकास कोड के साथ निकलता है, तो git संदर्भ अपडेट नहीं करेगा और उपयोगकर्ता को कोई त्रुटि मिलेगी।

तो अपने विशेष समस्या का समाधान करने, आप अपने update हुक करने के लिए निम्न जोड़ सकते हैं:

#!/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

आप डॉक्स से लिंक या यह कैसे एकीकृत के बारे में अधिक व्याख्या करने के लिए चाहते हो सकता है। – Daenyth

+0

@ डेनथ: अपडेटेड, धन्यवाद! –

+0

बहुत अच्छा, +1! – Daenyth

संबंधित मुद्दे