मेरे द्वारा सबवर्सन सेट अप करने के तरीके में से एक चीज यह है कि मेरे पास एकाधिक परियोजनाओं के साथ एक मुख्य भंडार हो सकता है। जब मैं किसी प्रोजेक्ट पर काम करना चाहता हूं तो मैं सिर्फ उस परियोजना को देख सकता हूं। इसकई परियोजनाओं के साथ सर्वर के लिए जीआईटी रिपोजिटरी लेआउट
\main
\ProductA
\ProductB
\Shared
तो
svn checkout http://.../main/ProductA
एक नया उपयोगकर्ता के रूप में की तरह git करने के लिए मैं एक विशिष्ट कार्यप्रवाह करने से पहले क्षेत्र में सबसे अच्छा अभ्यास का एक सा पता लगाने के लिए चाहते हैं। जो मैंने अभी तक पढ़ा है, उससे गिट प्रोजेक्ट पेड़ की जड़ पर एक ही .git फ़ोल्डर में सबकुछ स्टोर करता है। तो मैं दो चीजों में से एक कर सकता था।
- प्रत्येक उत्पाद के लिए एक अलग परियोजना सेट अप करें।
- उप फ़ोल्डरों में एक विशाल परियोजना और स्टोर उत्पादों को सेट करें।
उत्पादों के बीच निर्भरताएं हैं, इसलिए एकल विशाल परियोजना उचित लगती है। हम एक सर्वर का उपयोग करेंगे जहां सभी डेवलपर अपना कोड साझा कर सकते हैं। मुझे पहले ही यह एसएसएच & HTTP पर काम कर रहा है और वह भाग जिसे मैं प्यार करता हूं। हालांकि, एसवीएन में रिपोजिटरी पहले से ही बहुत से जीबी आकार में हैं, इसलिए प्रत्येक मशीन पर पूरे भंडार के चारों ओर खींचना एक बुरा विचार है - खासकर जब से हमें अत्यधिक नेटवर्क बैंडविड्थ के लिए बिल भेजा जाता है।
मैं कल्पना करता कि लिनक्स कर्नेल परियोजना खजाने समान रूप से बड़े तो वहाँ Git के साथ इस से निपटने में उचित तरीके से किया जाना चाहिए रहे हैं, लेकिन मैं सिर्फ यह अभी तक पता लगा नहीं किया है।
वहाँ किसी भी दिशा-निर्देश या बहुत बड़ी बहु परियोजना खजाने के साथ काम करने के लिए सर्वोत्तम प्रथाओं हैं?
यह भी ध्यान देने योग्य है कि यदि आप मुख्य प्रोजेक्ट में सबमिड्यूल शामिल करते हैं, तो प्रत्येक सबमिशन यह स्वयं का गिट रिपोजिटरी है, इसलिए आप सबमिड्यूल, कुछ टैग इत्यादि के विशेष संस्करणों को शामिल करने के लिए स्वतंत्र हैं। –
@ वॉनसी: यह समान लगता है उपद्रव द्वारा प्रदान किए गए "बाहरी" समर्थन। हमने कोशिश की और बाहरी लोगों में संस्करण संदर्भों को लगातार अद्यतन करने के लिए यह बेहद बोझिल पाया क्योंकि परियोजनाओं को एक-दूसरे पर निर्भरताओं के साथ समवर्ती रूप से विकसित किया गया है। क्या कोई और विकल्प है ?? –
@ पॉल: हाँ, मुख्य प्रोजेक्ट से संस्करण को अपडेट करने के बजाय, आप या तो मुख्य प्रोजेक्ट के भीतर से अपने सबप्रोजेक्ट्स को विकसित करते हैं (देखें http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194), या आप उप-रेपो में एक ही उप-रेपो की तरफ विकसित होने वाली उत्पत्ति में संदर्भित करते हैं: वहां से आपको उस सब-रेपो से कहीं और किए गए परिवर्तनों को खींचना होगा। दोनों स्थितियों में, आपको नई कॉन्फ़िगरेशन रिकॉर्ड करने के लिए मुख्य प्रोजेक्ट को स्वीकार करना न भूलना है। अद्यतन करने के लिए कोई "बाहरी" संपत्ति नहीं है।सभी प्रक्रिया बहुत अधिक प्राकृतिक है। – VonC