2015-12-04 4 views
7

में जोड़ें जब भी मैं git commit -m "msg" करता हूं तो मैं इस शेल स्क्रिप्ट को चला रहा हूं जो एक php फ़ाइल को प्रतिबद्ध लॉग लिखता है। मैं चाहता हूं कि यह वर्तमान प्रतिबद्ध संदेश भी शामिल करे और साथ ही मैं उस समय कर रहा हूं।एक प्रतिबद्ध लॉग बनाने के लिए गिट हुक का उपयोग करना और वर्तमान प्रतिबद्धता

मेरे खोल स्क्रिप्ट:

#!/bin/sh 
path="path/to/gitlog.php" 
echo "<?php $git_log = array(" > $path 
git log --date=iso --pretty=format:'array("%h","%an","%ad","%s"),' >> $path 
echo ");" >> $path 

gitlog.php, मेरे भंडार करने के लिए सहेजा जाता है जो मैं तो git push होगा।

वर्तमान में यह 'प्री-प्रतिबद्ध' हुक में है, क्या इस हुक में संदेश भेजने का कोई तरीका है?

मेरे उपयोग के मामले

मैं इस परियोजना में केवल डेवलपर हूँ। समय कम है! यह उन लोगों के लिए है जो प्रोजेक्ट में प्रगति देखने के लिए शामिल हैं और मेरे ऊपर के ऊपर के बिना वर्णनात्मक प्रतिबद्धता लॉग पढ़ते हैं। लॉग एक डैशबोर्ड पर आउटपुट है जिसे हर किसी के पास पहुंच है।

Git डैशबोर्ड सर्वर पर चल रहा है, और फ़ाइलों को भंडार होस्टिंग कंपनी (बीनस्टॉक) से तैनात किया गया है

+0

एक पूर्व-प्रतिबद्ध हुक प्रतिबद्धता से पहले चलता है, इसलिए इसमें संभवतः प्रतिबद्धता शामिल नहीं हो सकती है। जब आप प्रतिबद्ध बना चुके हैं, तो आप एक नया, अतिरिक्त प्रतिबद्ध * बना सकते हैं, और आप यह भी कर सकते हैं कि हाल ही में प्रतिबद्धता की तुलना में आप नए प्रतिबद्धता को एक अलग माता-पिता बना सकते हैं (इस प्रकार 'गिट प्रतिबद्ध - काम' काम करता है), लेकिन आप मौजूदा प्रतिबद्धता को बदल नहीं सकते हैं। यदि आप संस्करण की जानकारी शामिल करने का प्रयास कर रहे हैं, तो गिट के साथ सामान्य विधि उस फ़ाइल को गिट के बाहर रखना है, खासकर यदि पूरी फ़ाइल किसी प्रतिबद्धता से उत्पन्न होती है (जैसा कि यह होगा)। पुरानी प्रतिबद्धता को देखने के लिए आप इसे चेक आउट करते हैं, फिर अपना "जेनरेट संस्करण" चलाएं। – torek

+0

@torek, thks - क्या कोई हुक नहीं है जो वास्तविक प्रतिबद्धता से पहले बुलाया जाता है, और संदेश डेटा पास कर देता है, कि मैं लॉग संदेश को मैन्युअल रूप से जोड़ संदेश और तारीख जोड़ सकता हूं, 'गिट एड' को फिर से निष्पादित कर सकता हूं। ' और अंत में काम करने के साथ जारी है? – digout

+0

आह, हाँ, 'प्रतिबद्ध-संदेश' हुक है। इसका उद्देश्य आपको संदेश को बदलने के लिए (मानक स्वरूपण के लिए) या संदेश गलत होने पर प्रतिबद्धता को अस्वीकार करने का इरादा है। मैंने वास्तव में कभी भी इस हुक का उपयोग नहीं किया है, लेकिन यह प्रतिबद्ध प्रक्रिया में सही बिंदु पर चलता है। मैं 'गिट ऐड' नहीं करने की अनुशंसा करता हूं (जो उन फ़ाइलों को जोड़ सकता है जिन्हें आप जानबूझकर संशोधित-लेकिन-चरणबद्ध नहीं छोड़ रहे हैं) लेकिन 'गिट ऐड $ पथ' यहां अच्छी तरह से काम कर सकता है। (मैं विशिष्ट फाइलों के साथ-साथ, और/या 'गिट प्रतिबद्ध-ए' के ​​साथ परीक्षण का सुझाव दूंगा, यह देखने के लिए कि क्या यह वहां काम करता है।) – torek

उत्तर

0

आपके उपयोग के मामले को देखते हुए, मेरा सुझाव है:
को अपने स्थानीय मशीन पर अपने pre-commit हुक के लिए कदम डैशबोर्ड सर्वर पर post-checkout हुक (मैं वहाँ कल्पना करो कि डैशबोर्ड साइट के पीछे रेपो का क्लोन है?)

+0

नहीं, फ़ाइलों को रेपो होस्टर (बीनस्टॉक) से 'डैशबोर्ड सर्वर' पर तैनात किया जाता है – digout

1

एक अन्य विकल्प के लिए एक उपयुक्त हुक कि अपने रेपो के बाहर एक फ़ाइल को बदलाव का लिखते हैं बनाने के लिए, और फिर हो सकता है फ़ाइल को बाहरी उपयोगकर्ताओं द्वारा कहीं भी सुलभ करने के लिए धक्का देता है । तब चेंजलॉग को करने की कोई ज़रूरत नहीं है, जो समस्याओं का कारण है।

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