मैंने खुद से वही सवाल पूछे जब हम यहां तोड़फोड़ को लागू करने के लिए आए थे - लगभग 20 डेवलपर्स 4 - 6 परियोजनाओं में फैले थे। मुझे '' उत्तर '' के साथ कोई एक अच्छा स्रोत नहीं मिला। पिछले 3 वर्षों में हमारा उत्तर कैसे विकसित हुआ, इसके कुछ हिस्से इस प्रकार हैं:
- जितनी बार उपयोगी हो उतना कमिट करें; जब भी आपने पर्याप्त कार्य किया है, तो हमारे अंगूठे का नियम प्रतिबद्ध है कि संशोधनों के खो जाने पर इसे फिर से करने में समस्या होगी; कभी-कभी मैं हर 15 मिनट में ऐसा करता हूं, तो कई बार यह दिन हो सकता है (हां, कभी-कभी मुझे 1 लाइन कोड लिखने के लिए एक दिन लगता है)
- हम शाखाओं का उपयोग करते हैं, जैसा कि आपके पहले दिए गए उत्तर में से एक है, विभिन्न विकास पथों के लिए; अभी हमारे एक कार्यक्रम के लिए हमारे पास 3 सक्रिय शाखाएँ हैं: 1 मुख्य विकास के लिए, 1 कार्यक्रम को समानांतर बनाने के लिए अभी तक-अधूरा प्रयास के लिए, और 1 इसे संशोधित करने के प्रयास के लिए XML इनपुट और आउटपुट फ़ाइलों का उपयोग करने के लिए;
- हम शायद ही टैग का उपयोग करते हैं, हालांकि हमें लगता है कि हमें उत्पादन के लिए रिलीज की पहचान करने के लिए उनका उपयोग करना चाहिए;
एक ही रास्ते पर आगे बढ़ने के बारे में सोचें। विकास के विपणन के कुछ समय या स्थिति में उत्पाद के पहले संस्करण को जारी करने का निर्णय लिया जाता है, इसलिए आप '1' (या '1.0' या आपके पास क्या है) नामक पथ में एक ध्वज लगाते हैं। किसी अन्य समय में कुछ चमकीली चिंगारी कार्यक्रम को समानांतर करने का निर्णय लेती है, लेकिन यह तय करती है कि इसमें कुछ सप्ताह लगेंगे और लोग इस बीच मुख्य मार्ग को बंद रखना चाहते हैं। तो आप पथ में एक कांटा का निर्माण करते हैं और विभिन्न लोग अलग-अलग कांटे नीचे भटकते हैं।
सड़क में झंडे को 'टैग' कहा जाता है, और सड़क में कांटे ऐसे होते हैं जहाँ 'शाखाएँ' विभाजित होती हैं। कभी-कभी, भी, शाखाएं एक साथ वापस आती हैं।
- हम भंडार में एक निष्पादन योग्य (या सिस्टम) के निर्माण के लिए आवश्यक सभी सामग्री डालते हैं; इसका मतलब है कि कम से कम स्रोत कोड और फ़ाइल (या विज़ुअल स्टूडियो के लिए प्रोजेक्ट फ़ाइलें)। लेकिन जब हमारे पास आइकन्स और कॉन्फिग फाइल्स और अन्य सभी चीजें होती हैं, जो रिपॉजिटरी में जाती हैं। कुछ दस्तावेज रेपो में अपना रास्ता ढूंढते हैं; निश्चित रूप से कोई भी दस्तावेज़ जैसे कि मदद फ़ाइल जो प्रोग्राम का अभिन्न अंग हो सकता है, और यह डेवलपर दस्तावेज़ लगाने के लिए एक उपयोगी स्थान है।
हम अपने प्रोडक्शन रिलीज़ के लिए विंडोज निष्पादन योग्य भी रखते हैं, ताकि सॉफ्टवेयर की तलाश कर रहे लोगों के लिए एक ही स्थान प्रदान किया जा सके - हमारे लिनक्स रिलीज़ एक सर्वर पर जाते हैं, इसलिए इसे संग्रहीत करने की आवश्यकता नहीं है।
- हमें इसकी आवश्यकता नहीं है कि हर समय भंडार एक नवीनतम संस्करण देने में सक्षम हो, जो निर्माण और निष्पादन करता हो; कुछ परियोजनाएँ इस तरह से काम करती हैं, कुछ नहीं; निर्णय परियोजना प्रबंधक के साथ रहता है और कई कारकों पर निर्भर करता है, लेकिन मुझे लगता है कि किसी कार्यक्रम में बड़े बदलाव करने पर यह टूट जाता है।