2012-05-28 14 views
43

मेरे पास गिट में एक बड़ी भंडार है। मैं जेनकिंस में नौकरी कैसे बना सकता हूं जो परियोजना से सिर्फ एक उप-फ़ोल्डर की जांच करता है?जेनकींस और गिट स्पैस चेकआउट

+2

यह वास्तव में उस जटिलता जोड़ने के लिए आवश्यक है? एक बार जब भंडार पहली बार क्लोन किया जाता है, तो गिट सिर्फ नई वस्तुओं को खींच लेगा। जब तक आपके जेनकिंस सर्वर में पर्याप्त भंडारण की कमी नहीं थी, मैं बस पूरी चीज को क्लोन कर दूंगा और किसी भी अतिरिक्त जटिलता से बचूंगा। – wadesworld

उत्तर

42

Jenkins Git Plugin समर्थन स्पैस चेकआउट गिट-प्लगइन 2.1.0 (अप्रैल, 2014) के बाद से। इस सुविधा के लिए आपको git> = 1.7.0 की आवश्यकता होगी। यह "अतिरिक्त व्यवहार" के अंतर्गत है -> "स्पैस चेकआउट पथ"।

screenshot

देखें: Jira मुद्दा JENKINS-21809

+0

दुर्भाग्यवश गिट को अभी भी स्थानीय रूप से पूरे भंडार की प्रतिलिपि बनाने की आवश्यकता होगी। इसलिए आपको सर्वर से फ़ाइलों को प्राप्त करने के लिए गिट के लिए किसी भी गति सुधार का अनुभव नहीं हो सकता है। – luka5z

+5

दुर्भाग्यवश यह अभी भी मूल "पथ संरचना" के साथ इसे जांचता है, इसलिए ऐसा नहीं लगता है कि यह वास्तव में "एक निर्देशिका" की जांच करता है, यह केवल एक निर्देशिका को पॉप्युलेट करने के लिए होता है, FWIW – rogerdpack

+1

काफी और पुराना, लेकिन हम कैसे परिभाषित करते हैं अंतरिक्ष के साथ उपनिर्देशिका नाम। मैं "फ़ोल्डर/से/शामिल/निर्देशिका के साथ निर्देशिका" चेकआउट करना चाहता हूं .. – OK999

20

आप गिट की sparse checkout सुविधा का उपयोग कर सकते हैं। ध्यान दें कि गिट अभी भी स्थानीय डिस्क पर संपूर्ण भंडार क्लोन करता है। हालांकि यह बहुत बुरा नहीं है, क्योंकि यह संपीड़ित है।

  1. जेनकिन्स में एक नया काम बनाएं, स्रोत कोड प्रबंधन अनुभाग में गिट भंडार सेट करें।
  2. प्रोजेक्ट बनाएं। यह स्थानीय डिस्क पर संपूर्ण भंडार क्लोन करेगा।
  3. प्रोजेक्ट के वर्कस्पेस फ़ोल्डर खोलें, .git फ़ोल्डर को छोड़कर सबकुछ हटाएं।
  4. प्रोजेक्ट के वर्कस्पेस फ़ोल्डर के लिए ओपन गिट खोल। विरल-चेकआउट सक्षम करें: काम कर पेड़

    git config core.sparsecheckout true 
    
  5. अद्यतन:

    git read-tree -mu HEAD 
    
  6. .git/जानकारी फ़ोल्डर में sparse-checkout फ़ाइल बनाएँ। उप-फ़ोल्डर आप, उस फ़ाइल के चेकआउट करने के लिए तो जैसे चाहते हैं (ध्यान दें स्लैश) के लिए पथ जोड़ें:

    folder/to/include/ 
    
  7. फिर से परियोजना बनाएँ। इस बार वर्कस्पेस फ़ोल्डर में केवल एक उप-फ़ोल्डर दिखाना चाहिए।

+0

क्या आपको हर काम के लिए उन आदेशों को निष्पादित करना है? –

+1

@RuudLenders हां, आपको केवल उस सब नौकरी के लिए ऐसा करने की ज़रूरत है जिसे आप केवल एक उपफोल्डर को चेकआउट करना चाहते हैं। –

+0

चरण 5 का पालन करने के लिए 5 'गिट रीड-पेड़-एम हेड' कदम नहीं उठाया जाना चाहिए? जहां तक ​​मैं आप का पालन कर सकता हूं, पहले आपको गिट को बताएं कि कौन सी फाइलें इसे देखना चाहिए (चरण 6) और फिर पेड़ की जानकारी इंडेक्स में पढ़ें। – borisdiakur

1

आपको लगता है कि सिर्फ

git checkout your-branch -- the/desired/path anthother/desired/path 

यह साफ़ करने के लिए आप कर सकते थे बस rm -rf काम कर फ़ोल्डर का उपयोग और mkdir workingdir साथ इसे पुन: होगा एक कस्टम कदम हो सकता था। यह उपरोक्त आदेश के Git स्तर पर इस विकल्प को निर्दिष्ट करने के लिए आप की आवश्यकता होगी:

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path 
यह सब

आप कितना अच्छा जेनकींस पता पर निर्भर करता है।

+0

समस्या यह है कि जेनकींस सामान्य रूप से स्रोत कोड को पकड़ने के लिए प्लगइन का उपयोग करता है और गिट प्लगइन आपको चेकआउट के लिए कमांड बदलने की अनुमति नहीं देता है। –

+0

मुझे लगता है कि एक मौजूदा प्लगइन लिखना या संशोधित करना एक समस्या का बहुत अधिक होगा। –

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