2011-04-27 14 views
25

मैं एक गिट हुक स्थापित करना चाहता हूं जो आने वाले टैग के आधार पर एक सीडीएन-शैली निर्देशिका संरचना बनाता है। तो, उदाहरण के लिए, यदि स्थानीय भंडार में अंतिम टैग "v1.2.1" है और मैं "v1.2.2" के साथ एक प्रतिबद्धता खींचता हूं, तो उसे नया टैग देखना चाहिए और भंडार को सीधे नए रूप में क्लोन करना चाहिए (../1.2 .2) तदनुसार।मैं गिट हुक में नए टैग पर प्रतिक्रिया कैसे करूं?

मुझे यकीन है कि मैं इसे पोस्ट-प्राप्त करने के लिए संलग्न करना चाहता हूं, हालांकि मुझे आने वाले टैग को पढ़ने के तरीके के बारे में दस्तावेज़ गिट हुक के बारे में कुछ भी नहीं मिल रहा है। क्या वे एक अलग हुक पर पहुंचे हैं? क्या मुझे वास्तव में शेल स्क्रिप्ट को गिट कमांड चलाने की आवश्यकता है यह देखने के लिए कि क्या किसी भी नए काम में नए टैग हैं?

धन्यवाद!

उत्तर

30

टैग किसी अन्य (जैसे प्रतिबद्ध) की तरह रेफरी हैं।
यदि टैग post-receive hook के साथ रेपो को धक्का दिया जाता है, तो उस हुक को सभी अपडेट किए गए रेफरी को सूचीबद्ध किया जाएगा और सूचीबद्ध होगा, जो उनके नामों (इसके मानक इनपुट पर) के अलावा सभी रेफरी के पुराने और नए मान दोनों हैं।

उदाहरण के लिए इस सर्वर को post-receive email हुक देखें।

#!/bin/sh 

. $(dirname $0)/functions 

process_ref() { 
    oldrev=$(git rev-parse $1) 
    newrev=$(git rev-parse $2) 
    refname="$3" 

    set_change_type 
    set_rev_types 
    set_describe_tags 

    case "$refname","$rev_type" in 
     refs/tags/*,tag) 
     # annotated tag 
     refname_type="annotated tag" 
     function="atag" 
     short_refname=${refname##refs/tags/} 
     # change recipients 
     if [ -n "$announcerecipients" ]; then 
      recipients="$announcerecipients" 
     fi 
     ;; 
    esac 
} 

while read REF; do process_ref $REF; done 

इसके लिए आपको भी काम करने के लिए ऊपर उल्लिखित उदाहरण हुक रिपोजिटरी से the functions file स्थापित करना होगा। जब मैं एक टैग दबाता हूं तो

+0

'$ 1, $ 2, और $ 3' मेरे लिए सभी शून्य हैं। – chovy

+0

@chovy strage। यह समान लिपि (http://www.kaarsemaker.net/blog/2013/10/16/automatically-pushing-local-git-repositories-other-sources/) में एक ही समस्या नहीं है। – VonC

+0

मैंने जवाब में उदाहरण तय किया है कि यह एक पूर्ण बैश स्क्रिप्ट है, मेरे जैसे उन लोगों के लिए जो पोस्ट-प्राप्त लिंक का पालन करने के लिए बहुत आलसी हैं –

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