2011-04-07 9 views
23

मेरे पास एक गिट पोस्ट हुक प्राप्त है जो मेरे निर्माण प्रणाली पर एक निर्माण को ट्रिगर करेगा। मुझे हुक स्क्रिप्ट में "$ repo-name + $ branch" फ़ॉर्म की एक स्ट्रिंग बनाने की आवश्यकता है।गिट पोस्ट-प्राप्त हुक कैसे रेपो का नाम प्राप्त कर सकता है यह चल रहा है?

मैं शाखा को पार्स कर सकता हूं, लेकिन मैं गिट से रिपोजिटरी नाम कैसे प्राप्त कर सकता हूं?

धन्यवाद!

उत्तर

37

"रिपोजिटरी नाम" गिट में एक अच्छी तरह से परिभाषित विचार नहीं है, मुझे लगता है। शायद एक उपयोगी पेड़ के साथ एक भंडार के मामले में एक नंगे भंडार या whatever के मामले में whatever.git वापस करने के लिए सबसे उपयोगी होगा। मैं परीक्षण किया है कि ठीक से एक post-receive हुक के भीतर से दोनों ही मामलों के साथ बॉर्न शैल सौदों के इस बिट:

if [ $(git rev-parse --is-bare-repository) = true ] 
then 
    REPOSITORY_BASENAME=$(basename "$PWD") 
else 
    REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..)) 
fi 
echo REPOSITORY_BASENAME is $REPOSITORY_BASENAME 

अद्यतन: आप नंगे भंडार के मामले में .git एक्सटेंशन को निकालना चाहते हैं, तो आप एक जोड़ सकते हैं पहले मामले को लाइन इसे बंद पट्टी:

REPOSITORY_BASENAME=$(basename "$PWD") 
    REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git} 
+1

ग्रेट। यह काम करता है। मैं एक नंगे रेपो से ".git" को कैसे हटा सकता हूं? – Jacko

+0

@ जैको: मैंने –

+0

Aweseome करने का तरीका सुझाए जाने के लिए उत्तर अपडेट किया है !!!! धन्यवाद। – Jacko

1

आप $ GIT_DIR, या $ GIT_WORK_TREE का निरीक्षण कर सकते हैं और वहां से रेपो नाम प्राप्त कर सकते हैं।

+2

'GIT_DIR' बस '.' पर सेट है और' GIT_WORK_TREE' हुक के लिए पर्यावरण में सेट नहीं है। –

0

आप git rev-parse --show-toplevel कर सकते हैं, जो आपको शीर्ष-स्तरीय निर्देशिका का मार्ग प्रदान करेगा, और उस नाम से बाहर खींच जाएगा (reponame.git दूरस्थ रूप से सुलभ रिपो के लिए पारंपरिक है)।

$PWD में भी वही जानकारी हो सकती है, लेकिन मुझे यकीन नहीं है।

+1

'गिट रेव-पार्स - शो-टोपलवेल' एक नंगे भंडार में काम नहीं करेगा। ('$ PWD' एक काम करने वाले पेड़ के साथ एक भंडार के लिए काम करने वाले पेड़ का शीर्ष स्तर होगा, या भंडार निर्देशिका स्वयं को एक नंगे भंडार के लिए होगा, इसलिए आपको उपयोगी नाम प्राप्त करने के लिए थोड़ा और काम करने की आवश्यकता है ...) –

0

एक Gitolite उपयोग कर रहा है, GL_REPO चर डिफ़ॉल्ट रूप से post-receive वातावरण में उपलब्ध है।

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