गिट में एक नई शाखा की जांच के बाद एक हुक ट्रिगर करने का कोई तरीका है?क्या गिट में एक नई शाखा की जांच के बाद हुक ट्रिगर करने का कोई तरीका है?
उत्तर
इन हुक से एक ऐसा नहीं करेंगे, तो मैं हैरान
http://schacon.github.com/git/githooks.html
हो सकता है कि यह एक होगा:
बाद चेकआउट
यह हुक शुरू हो जाती है जब गिट-चेकआउट के बाद वर्कट्री अपडेट करने के बाद चलाया जाता है। हुक दिया जाता है तीन पैरामीटर: पिछले HEAD के रेफरी, नए प्रमुख (जो या बदल दिया है नहीं हो सकता है) के रेफरी, और एक ध्वज यह बताते हैं कि चेकआउट एक शाखा चेकआउट था (बदलते शाखाओं , ध्वज = 1) या फ़ाइल चेकआउट ( अनुक्रमणिका, ध्वज = 0 से फ़ाइल पुनर्प्राप्त करना)। यह हुक गिट-चेकआउट के नतीजे को प्रभावित नहीं कर सकता है।
एक Git हुक एक स्क्रिप्ट अपने भंडार का एक विशेष स्थान में रखा है, उस स्थान है:
.git/हुक
स्क्रिप्ट किसी भी तरह का हो सकता है कि आप कर सकते हैं अपने पर्यावरण यानी बैश, पायथन, रूबी इत्यादि में निष्पादित करें
चेकआउट के बाद निष्पादित किया गया हुक post-checkout है। डॉक्स से:
... हुक तीन पैरामीटर ...
दिया जाता है
उदाहरण:
हुक (स्क्रिप्ट) बनाएँ:
touch .git/hooks/post-checkout chmod u+x .git/hooks/post-checkout
हुक नमूना सामग्री:
#!/bin/bash
set -e
printf '\npost-checkout hook\n\n'
prevHEAD=$1
newHEAD=$2
checkoutType=$3
[[ $checkoutType == 1 ]] && checkoutType='branch' ||
checkoutType='file' ;
echo 'Checkout type: '$checkoutType
echo ' prev HEAD: '`git name-rev --name-only $prevHEAD`
echo ' new HEAD: '`git name-rev --name-only $newHEAD`
नोट: पहली पंक्ति में कुटिया स्क्रिप्ट के प्रकार का संकेत।
यह स्क्रिप्ट (गिट हुक) केवल तीन मानकों को पारित करेगी और उन्हें मानव-अनुकूल प्रारूप में मुद्रित करेगी।
post-checkout
hook तीन पैरामीटर प्राप्त करता है:
- पिछले HEAD के रेफरी नए प्रमुख की
- रेफरी
- क्या यह एक फ़ाइल चेकआउट (
0
) या शाखा चेकआउट (1
)
आप इस तथ्य का उपयोग कर सकते हैं कि वर्तमान HEAD से बनाई गई शाखा के पैरामीटर 1 और 2 के लिए समान मान होगा।
cat > .git/hooks/post-checkout <<"EOF"
if [ "$3" == "0" ]; then exit; fi
if [ "$1" == "$2" ]; then
echo "New branch created. (Probably)."
fi
EOF
chmod u+x .git/hooks/post-checkout
सीमाएं:
- एक मौजूदा शाखा है जो एक ही सिर पर होने के लिए वर्तमान प्रधान के रूप में यह मूर्ख होगा होता है की जांच कर रहा।
- वर्तमान HEAD से नहीं बनाया गया एक नई शाखा बनाना नहीं होगा।
दूसरों के समान लेकिन यह सत्यापित करता है कि शाखा को एक बार चेक आउट किया गया है।
#!/bin/bash
# this is a file checkout – do nothing
if [ "$3" == "0" ]; then exit; fi
BRANCH_NAME=$(git symbolic-ref --short -q HEAD)
NUM_CHECKOUTS=`git reflog --date=local | grep -o ${BRANCH_NAME} | wc -l`
#if the refs of the previous and new heads are the same
#AND the number of checkouts equals one, a new branch has been created
if [ "$1" == "$2" ] && [ ${NUM_CHECKOUTS} -eq 1 ]; then
git push origin ${BRANCH_NAME}
fi
यह मुझे सही रास्ते पर मिला, बहुत बहुत धन्यवाद! चूंकि यह चेकआउट की गिनती करने के लिए रीफ्लॉग को गड़बड़ कर रहा है, मेरा मानना है कि यदि एक शाखा पहले मौजूद थी और उसी नाम के साथ एक नई शाखा बनाई गई थी, तो उस शाखा को नए के रूप में पहचाना नहीं जाएगा। यह वांछित व्यवहार या उपयोग के मामले के आधार पर एक मुद्दा हो सकता है लेकिन मुझे लगा कि मैं इसका उल्लेख करूंगा। – Pwnrar
- 1. गिट हुक और नई शाखाएं प्राप्त/अद्यतन
- 2. गिट: नई शाखा
- 3. परिवर्तन के बाद एक गिट शाखा बनाना
- 4. गिट: वर्तमान शाखा में मौजूदा शाखा में प्रगति की वर्तमान स्थिति में एक नई शाखा
- 5. गिट हुक: क्या क्लोन हुक है?
- 6. गिट रीसेट करने के बाद बेनामी शाखा
- 7. गिट के साथ एक नई परियोजना में क्लोन/डुप्लिकेट करने का सबसे अच्छा तरीका क्या है?
- 8. गिट शाखा एक नई प्रतिबद्धता में भिन्न होती है
- 9. गिट हुक जब एक नई शाखा बनाई जाती है और/या धक्का दिया जाता है
- 10. बाद अद्यतन हुक
- 11. जब मैं एक नई शाखा
- 12. क्या इस तथ्य के बाद गिट में svn इतिहास आयात करने का कोई तरीका है?
- 13. गिट फिल्टर-शाखा के बाद गिट पुश
- 14. एक शाखा के एक सब्रेंज पैच गिट करने का सबसे अच्छा तरीका क्या है?
- 15. क्या कोई शर्त सही है, तो jQuery चेनिंग की शाखा को करने का कोई तरीका है
- 16. गिट शाखा (कोई शाखा नहीं)
- 17. क्या Django के ग्रहण में Pyunit में unittest हुक करने का कोई तरीका है?
- 18. गिट हुक: जब शाखा उन्नत होती है तो कार्रवाई करें
- 19. क्या SWIG की नई बिल्टिन सुविधा के साथ Pythonappend का उपयोग करने का कोई तरीका है?
- 20. क्या गिट पोस्ट-प्रतिबद्ध हुक के साथ प्रतिबद्धता की प्रभावित फ़ाइलों को प्राप्त करने का कोई तरीका है?
- 21. गिट में एक शाखा से सभी परिवर्तनों को मर्ज करने का सबसे आसान तरीका क्या है?
- 22. क्या पर्ल के साथ विंडोज़ में व्यवस्थापक अधिकारों की जांच करने का कोई तरीका है?
- 23. क्या Python में फ़ंक्शन के हस्ताक्षर की जांच करने का कोई तरीका है?
- 24. क्या गिट में किसी शाखा पर सभी बदली गई फाइलें देखने का कोई तरीका है?
- 25. गिट में एक नई शाखा बनाते समय 'ट्रैक' का क्या अर्थ है?
- 26. क्या NetBeans फ़ाइल के अंत में एक नई लाइन सुनिश्चित करने का कोई तरीका है?
- 27. एक शाखा में गिट क्लोन
- 28. मर्ज की जांच करने पर गिट जांच कैसे होती है?
- 29. क्या खींचने के लिए कोई गिट हुक है?
- 30. क्या एक गिट भंडार के डाउनलोड/क्लोन आंकड़े प्राप्त करने का कोई तरीका है?
क्या आपको यह बताने के किसी भी तरीके से पता है कि यह शाखा निर्माण चेकआउट है (नए हेड के रीफ्लॉग को देखने के अलावा)? – pkoch
ऐसा लगता है कि एक नया सवाल पूछने के लिए यह एक अच्छा विचार होगा। यदि आप करते हैं, तो मुझे लिंक भेजें और मैं देखूंगा कि मैं मदद कर सकता हूं या नहीं। समस्या क्या है जिसे आप हल करने की कोशिश कर रहे हैं? – givanse
यदि कोई प्रतिबद्धता कई शाखाओं का शीर्ष है, तो 'name-rev' केवल वह नाम देता है जो पहले वर्णानुक्रम में आता है। इस प्रकार एक शाखा के साथ एक शाखा की जांच करने के बाद जो मूल शाखा के नाम से पहले वर्णित है, 'पिछली हेड' लाइन नई शाखा का नाम देगी। एक कामकाज: 'यह ब्रंचनाम = $ (गिट रेव-पार्स --ब्रेब-रेफ हेड); $$ में शाखा के लिए (गिट शाखा - रंग = कभी नहीं - $ 1 | sed -e's /^..// '); करें ["$ (गिट शो-रेफ-एस $ शाखा)" == $ 1] && ["$ शाखा"! = "$ यह ब्रंचनाम"]; फिर parentBranchName = $ शाखा; ब्रेक; फाई; किया गया – Ansa211