2017-01-10 21 views
5

को संपीड़ित करने के लिए गिट हुक के साथ सीआई स्क्रिप्ट का सही ढंग से उपयोग कैसे करें मेरे पास feature शाखा और testing शाखा (प्रारंभिक प्रतिगमन के लिए) है। मैं परीक्षण वातावरण के लिए अपने testing शाखा के लिए एक कार्यशील प्रति उपलब्ध करना चाहता हूं। हालांकि, मुझे किसी स्क्रिप्ट के माध्यम से कुछ स्रोत कोड (बाइनरी में नहीं, बस अनुकूलित करें) को संपीड़ित करने की आवश्यकता है। मैं इस स्क्रिप्ट को पोस्ट-प्राप्त गिट हुक के माध्यम से अधिनियमित कर सकता हूं।स्रोत

मैं अपनी बैश स्क्रिप्ट (सीआई के लिए) को डिजाइन करने की कोशिश कर रहा हूं ताकि यह काफी मजबूत हो और गिट संघर्षों के कारण स्वचालन से बचना चाहें। मैं सीआई को प्रतिबद्ध करने की अनुमति देने के लिए मुख्य भंडार (origin) और एक परीक्षण पर्यावरण भंडार (ci_test) रखने की सोच रहा हूं।

मैं स्रोत को बढ़ावा देने पर ci_test/testing पर धक्का देने के बारे में सोच रहा हूं। सीआई को origin/testing से संपीड़ित, जोड़ना, प्रतिबद्ध करना चाहिए, यदि आवश्यक हो तो विलय करें (अपने पूर्ण पूर्ण iff संघर्ष लेना), फिर origin/testing पर धक्का दें।

उपरोक्त मेरे मॉडल की समस्या यह है कि जब मैं ci_test/testing पर धक्का देने का प्रयास करता हूं तो गिट शिकायत करता है क्योंकि इसमें एक कार्यशील प्रति है (समझ में आता है, क्योंकि उन्हें सिंक नहीं किया जा सकता है)। क्या गिट के साथ निरंतर एकीकरण स्क्रिप्ट का उपयोग करने के लिए कोई उचित (स्वचालित) तरीका है ताकि वे अभी भी ट्रैक हो जाएं?

उत्तर

2

अपने मॉडल के लिए समस्या ऊपर है कि Git शिकायत जब मैं ci_test/testing को पुश करने के लिए है, क्योंकि यह एक काम की नकल है (समझ में आता है, क्योंकि वे सिंक्रनाइज़ नहीं किया जा सकता है) का प्रयास है। या तो

आप कर सकते हैं:

  • एक post-receive hook जायें जो कि साथ सुनिश्चित करें कि आपके ci_test, एक नंगे रेपो है:

  • या, यदि आप केवल ci_testing रिमोट रेपो को धक्का दे रहे हैं, तो रिमोट गिट को गैर-नंगे रेपो में धक्का स्वीकार करने के लिए कॉन्फ़िगर करें।
    इस के साथ संभव since Git 2.3+ है:

    git config receive.denyCurrentBranch updateInstead 
    

और with Git 2.4+ आप सेटअप कर सकते हैं दूरस्थ ci_testing एक "push-to-checkout" हुक है, जो वास्तव में क्या होता है अनुकूलित करने के लिए जब कोई उपयोगकर्ता धक्का सर्वर पर स्थापित किया जा सकता के साथ चेक-आउट शाखा में।

+0

[पुश-टू-चेकआउट] (https://git-scm.com/docs/githooks#_push_to_checkout) हुक आशाजनक दिखता है। मैं उस हुक के बारे में पता नहीं था। कारण मैं ci_test को एक कार्यशील प्रतिलिपि बनाना चाहता था क्योंकि हुक स्रोत को संशोधित करेगा और मैं परिवर्तन करना चाहता हूं (मैं कल्पना नहीं कर सकता कि काम करने की प्रतिलिपि के बिना ऐसा करने में सक्षम होना)। मैं कामकाजी प्रति को उस निर्देशिका के रूप में भी उपयोग कर रहा हूं जिसका प्रयोग अनुप्रयोग के परीक्षण संस्करण को पढ़ने के लिए किया जाता है। – BLaZuRE

+0

@BLaZuRE हां, आपके मामले में, पुश-टू-चेकआउट एक अच्छा फिट लगता है। – VonC

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