GitHub पर Git Project निर्भरता


14

मैंने एक फ्रेमवर्क के ऊपर एक PHP फ्रेमवर्क और एक सीएमएस लिखा है। CMS फ़्रेमवर्क पर निर्भर है, लेकिन CMS फ़ाइलों के भीतर फ़्रेम एक स्व-निहित फ़ोल्डर के रूप में मौजूद है। मैं उन्हें GitHub पर अलग-अलग परियोजनाओं के रूप में बनाए रखना चाहता हूं, लेकिन मैं हर बार सीएमएस परियोजना को अपडेट करने की गड़बड़ नहीं करना चाहता। आदर्श रूप से, मैं चाहूंगा कि सीएमएस किसी तरह से उन फाइलों को भौतिक रूप से कमिट करने के बजाय पूर्वनिर्धारित उप-निर्देशिका में शामिल करने के लिए फ्रेमवर्क फ़ाइलों को खींच ले।

क्या यह Git / GitHub के साथ संभव है? यदि हां, तो मुझे इसे काम करने के लिए क्या जानना चाहिए? ध्यान रखें कि मैं Git के साथ एक बहुत, बहुत बुनियादी स्तर के अनुभव पर हूं - मैं रिपॉजिटरी बना सकता हूं और ग्रहण के लिए Git प्लगइन का उपयोग करके प्रतिबद्ध कर सकता हूं, GitHub से कनेक्ट कर सकता हूं, और इसके बारे में। मैं वर्तमान में परियोजनाओं पर अकेले काम कर रहा हूं, इसलिए मुझे अब तक Git के बारे में ज्यादा कुछ नहीं सीखना है, लेकिन मैं इसे भविष्य में दूसरों के लिए खोलना चाहता हूं और मैं यह सुनिश्चित करना चाहता हूं कि मेरे पास यह सही है।

इसके अलावा, निर्भरता वाली परियोजनाओं के लिए मेरा आदर्श वर्कफ़्लो क्या होना चाहिए? उस विषय पर कोई सुझाव भी बहुत सराहना की जाएगी। यदि आपको मेरे सेटअप पर अधिक जानकारी की आवश्यकता है, तो बस टिप्पणियों में पूछें।


: बाहर Git सबट्री के रूप में यहाँ के बारे में बात की जाँच करें blogs.atlassian.com/2013/05/...
निक

जवाबों:


11

सबसे पहले, यदि आप वास्तव में इसके लिए git का उपयोग करना चाहते हैं, तो इसकी सबमॉडल कार्यक्षमता का उपयोग करने पर विचार करें :

Git का सबमॉड्यूल सपोर्ट एक रिपॉजिटरी को, एक सबडायरेक्ट के रूप में, एक बाहरी प्रोजेक्ट के चेकआउट के लिए अनुमति देता है। सबमॉड्यूल्स अपनी खुद की पहचान बनाए रखते हैं; सबमॉड्यूल सपोर्ट सिर्फ सबमॉड्यूल रिपॉजिटरी लोकेशन और कमिट आईडी को स्टोर करता है, इसलिए अन्य डेवलपर्स जो किसी भी प्रॉजेक्ट ("सुपरप्रोजेक्ट") को क्लोन करते हैं, वे आसानी से एक ही रिवीजन में सभी सबमॉडल को क्लोन कर सकते हैं। सुपरप्रोजेक्ट के आंशिक चेकआउट संभव हैं: आप Git को क्लोन करने के लिए कोई नहीं, कुछ या सभी सबमॉड्यूल बता सकते हैं।

लिंक किए गए पृष्ठ में एक विस्तृत चर्चा शामिल है कि इसका उपयोग कैसे करें, इसके उदाहरण सहित।

उस ने कहा, मैं आपके संस्करण नियंत्रण प्रणाली का उपयोग निर्भरता प्रबंधन के लिए नहीं करने की सलाह दूंगा और एक निर्माण उपकरण का उपयोग करना शुरू कर दूंगा जो आपके लिए इन चीजों को संभाल सकता है, जैसे कि मावेन या चींटी । यहां तक ​​कि Phing नामक विकास में एक PHP- विशिष्ट बिल्ड टूल है , लेकिन मैंने अभी तक इसका उपयोग नहीं किया है। यह एक लेख में उल्लेख किया गया है जो आपके प्रश्न पर चर्चा करता है: संस्करण नियंत्रण! = निर्भरता प्रबंधन

कारण निर्माण उपकरण लंबे समय में एक बेहतर फिट हो सकते हैं क्योंकि वे अक्सर विभिन्न रिपॉजिटरी प्रकार, बाहरी पुस्तकालयों (और विभिन्न स्थानों) और व्यापक जाँच का समर्थन करते हैं। यदि आप केवल इन दो पुस्तकालयों को एकीकृत करना चाहते हैं और कोई अतिरिक्त परेशानी नहीं चाहते हैं, तो सबमॉड्यूल दृष्टिकोण संभवतः पर्याप्त है।


+1 - धन्यवाद डेकार्ड। मुझे लगा कि Git में सबमॉड्यूल्स जैसा कुछ था, मुझे नहीं पता था कि इसे क्या कहा जाता है। मैं निश्चित रूप से फ़िंग पर एक लंबा नज़र डालूंगा। मुझे एक PHP बिल्ड टूल चाहिए था जो निर्भरता का प्रबंधन करता है, यूनिट परीक्षण चलाता है, और फिर मेरी साइट पर पहुंचता है। ऐसा लग रहा है कि फिंग शायद वह सब कर सकते हैं। यह भी लगता है कि इसे सीखने में थोड़ा समय लगेगा। क्या आप फिंग के लिए किसी अच्छे स्क्रैनास्ट के बारे में जानते हैं (Google उस संबंध में दयालु नहीं है)?
पुण्योसोमीडिया

"सबमॉड्यूल फंक्शनलिटी" का लिंक टूटा हुआ है, और "वर्जन कंट्रोल! = डिपेंडेंसी मैनेजमेंट" का लिंक भी टूटा हुआ है
फेरीबग

6

गिट सबमॉड्यूल्स , गिट प्रोजेक्ट निर्भरता के प्रबंधन का एक शानदार तरीका है।

यदि आप दूसरे दृष्टिकोण की तलाश कर रहे हैं:

संगीतकार आपके लिए यह सब कर सकता है। संगीतकार php के लिए एक निर्भरता प्रबंधक है। यह वाक्य रचना json का है। यह प्रयोग करने में आसान और सस्ता है।

संगीतकार के बारे में अधिक जानकारी:

संगीतकार PHP में निर्भरता प्रबंधन के लिए एक उपकरण है। यह आपको आश्रित पुस्तकालयों को आपकी परियोजना की जरूरतों को घोषित करने की अनुमति देता है और यह उन्हें आपके लिए आपकी परियोजना में स्थापित करेगा।

पर प्रलेखन पेज , आप अपने composer.json फ़ाइल का निर्माण किया जाएगा का एक उदाहरण देख सकते हैं:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

एक बार जब आपके पास आपका कंपोज़र.जेसन और कंपोज़र.लॉक फ़ाइल आपके प्रोजेक्ट के लिए बन जाती है तो आप आसानी से अपनी निर्भरताएँ स्थापित कर सकते हैं:

composer.phar install या उन्हें अपडेट करें: composer.phar update या पैकगिस्ट से एक विशेष परियोजना बनाएं : composer.phar create-project acmeproject


1

हाल ही में मैंने अपने प्रोजेक्ट की निर्भरता के प्रबंधन के लिए पंडले नामक टूल का उपयोग करना शुरू किया । यह निर्भरता के रूप में एक PHP संस्करण, PEAR संकुल, Git रिपोजिटरी और SVN रिपोजिटरी का समर्थन करता है और आसानी से उन्हें "Pundlefile" के माध्यम से निर्दिष्ट करने की अनुमति देता है।

आपको अपनी निर्भरता को भी कॉन्फ़िगर करना चाहिए ताकि गिट / एसवीएन चेकआउट को एक निर्देशिका में डाला जाए जो संस्करण नियंत्रण (उदाहरण के लिए "विक्रेता") के तहत नहीं है, इसलिए आपके पास प्रत्येक चेकआउट पर एक नई शुरुआत करने और अपने प्रोजेक्ट के भंडार को दुबला रखने के लिए है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.