2009-04-29 12 views
22

मुझे कुछ googling के बाद गिट के लिए पोस्ट-प्राप्त हुक मिला जो मैं सभी को रिमोट/साझा रेपो में ई-मेल करने के लिए उपयोग करता हूं।गिट: डिफ पैच समेत ईमेल हुक पोस्ट-प्राप्त करें?

इस post-receive hook के साथ समस्या यह है कि इसमें केवल प्रतिबद्धता, लॉग संदेश, दिनांक, फ़ाइल (ओं) प्रभावित करने की क्षमता है। मैं कोड में किए गए परिवर्तनों को देखने के लिए ई-मेल में प्रभावित फ़ाइल (ओं) जेनरेट किए गए पैच भी देखना चाहता हूं। सबवर्सन यह बल्कि अच्छी तरह से करता है।

क्या किसी के पास शायद एक एनवी-वेरिएबल का समाधान है जो पोस्ट-प्राप्त हुक को पास किया जा सकता है जो ऐसा करता है? या इससे भी बेहतर, एक उदाहरण जो पहले ही पकाया गया है?

धन्यवाद सब!

उत्तर

21

हाल Git संस्करण के लिए $ oldrev से डिफ के post-receive-email स्क्रिप्ट स्थापित करना चाहिए सहित सभी संशोधन से पता चलता है। इस रिपोर्ट में यह कहते हैं:

hooks.showrev

खोल "% s" प्रतिबद्ध आईडी के साथ बदल के साथ ई-मेल में प्रत्येक संशोधन फ़ॉर्मेट करने के लिए इस्तेमाल किया आदेश। "गिट रेव-लिस्ट -1 --pretty% s" के लिए डिफ़ॉल्ट, प्रतिबद्ध आईडी, लेखक, दिनांक और लॉग संदेश प्रदर्शित करना। रिक्त रेखा से अलग पूर्ण पैच सूचीबद्ध करने के लिए, आप इसे "गिट शो-सी% s; echo" पर सेट कर सकते हैं।

तो बस hooks.showrev को "गिट शो-सी% एस" पर सेट करें; echo "ईमेल हुक के साथ भंडार में और आप सब तैयार हैं।

+0

बॉम्बे, मैंने कमांड लाइन पर निम्नलिखित सेट करने का प्रयास किया है बिना किसी किस्मत के। # git config --global hooks.showrev "git show -C% s; echo" –

+0

कोई बात नहीं, आप इसे --global में नहीं जोड़ सकते हैं, इसे केवल गिट कॉन्फ़िगर करना होगा, अन्यथा आपका समाधान है ठीक है, धन्यवाद! –

+0

मुझे वैश्विक सेटिंग्स में सभी आवश्यक कॉन्फ़िगरेशन मानों को सेट करने में कोई समस्या नहीं थी। – Bombe

1

मैंने इसे थोड़ी देर में नहीं चलाया है, लेकिन (मुझे विश्वास है) one I used to use ऑनलाइन है। मैंने गिट के साथ जहाज के लिए इस्तेमाल किया और मेरी पसंद के लिए इसे और अधिक पुन: व्यवस्थित किया। मैंने लंबे समय तक कुछ भी चलाने की कोशिश नहीं की है।

मैं इसे क्या किया के कुछ स्क्रीनशॉट मिल गया है:

+0

हाय डस्टिन। क्या आपके पास ऐसे संशोधन होते हैं जो आउटपुट को उपरोक्त स्क्रीनशॉट के समान दिखते हैं? –

+0

मुझे पूरा यकीन है कि मेरी पहली वाक्य में गिस्ट लिंक क्या है। यदि नहीं, तो नहीं। :( – Dustin

1

इस अनुभाग देखें।

echo "" 
echo "Summary of changes:" 
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev 

यहां गिट को diff के लिए कहा जाता है, लेकिन फिर इसे सारांशित करने के लिए भी कहा जाता है। --स्टैट और --समरी झंडे को हटा दें और आप diff देखेंगे।

git diff-tree --find-copies-harder $oldrev..$newrev 

यहाँ एक और तरीका है कि $ newrev

git --no-pager log --find-copies-harder $oldrev..$newrev 
+0

हाय रॉबिन। मैंने उपरोक्त दोनों मोडों को आजमाया और अभी भी diff आउटपुट नहीं मिला। –

+0

ठीक है, मैं दोनों संस्करणों में "-p" विकल्प भूल गया। – robinr

2

मैं यहाँ इसी तरह के मुद्दों था:

Git hook to send email notification on repo changes

असल में वहाँ के बाद प्राप्त होता है-ईमेल स्क्रिप्ट के विभिन्न संस्करणों रहे हैं - git.kernel.org पर एक ही उपलब्ध के बारे में सूचित और सम्मान hooks.showrev, जो मैंने नहीं किया था।

लेकिन यह चर्चा शांत है, धन्यवाद, निश्चित रूप से इसे देखेंगे! ऊपर लिखे गए अन्य स्क्रिप्ट में गिटवेब लिंक फीचर और सामान भी है, आप दूसरों को इस पर कैसे कर रहे हैं?

1

हालांकि इस सवाल का पहले से ही स्वीकार किए जाते हैं जवाब, मैंने सोचा है इस अच्छे के बाद प्राप्त मेलर हुक में से एक है कि मैं का सामना करना पड़ा था:

http://github.com/brasse/post_receive_email.py

लेखक के ब्लॉग पोस्ट के माध्यम से की खोज की:

http://copypasteprogrammer.blogspot.com/2010/03/git-post-receive-hook-in-python.html

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