मेरी कंपनी वर्तमान में सबवर्जन, सीवीएस, मर्कुरियल और गिट का उपयोग करती है।
जब हमने पांच साल पहले शुरू किया, हमने सीवीएस चुना, और हम अभी भी अपने मुख्य विकास और रखरखाव शाखा को जारी करने के लिए मेरे विभाजन में इसका उपयोग करते हैं। हालांकि, हमारे कई डेवलपर्स सीवीएस शाखाओं (और विशेष रूप से उन्हें विलय करने) के दर्द के बिना व्यक्तिगत चेकपॉइंट्स रखने के तरीके के रूप में व्यक्तिगत रूप से Mercurial का उपयोग करते हैं और हम कुछ शाखाओं के लिए Mercurial का उपयोग शुरू कर रहे हैं जिनमें लगभग 5 लोग हैं। एक अच्छा मौका है कि हम आखिरकार एक और साल में सीवीएस खो देंगे। Mercurial का हमारा उपयोग व्यवस्थित रूप से उगाया गया है; कुछ लोग अभी भी इसे छूते नहीं हैं, क्योंकि वे सीवीएस से खुश हैं। हर कोई जिसने Mercurial की कोशिश की है, बिना किसी सीखने की वक्र के, इसके साथ खुश होना समाप्त हो गया है।
Mercurial के साथ हमारे लिए वास्तव में अच्छी तरह से क्या काम करता है यह है कि हमारे (होम ब्रूड) निरंतर एकीकरण सर्वर डेवलपर Mercurial भंडारों के साथ-साथ मुख्य लाइन की निगरानी कर सकते हैं। इसलिए, लोग अपने भंडार को प्रतिबद्ध करते हैं, इसे जांचने के लिए हमारे निरंतर एकीकरण सर्वर प्राप्त करते हैं, और फिर परिवर्तन को प्रकाशित करते हैं। हम कई प्लेटफ़ॉर्म का समर्थन करते हैं, इसलिए मैन्युअल चेक के सभ्य स्तर को करने के लिए यह संभव नहीं है। एक और जीत यह है कि विलय अक्सर आसान होते हैं, और जब वे कड़ी मेहनत करते हैं तो आपके पास मर्ज पर अच्छी नौकरी करने के लिए आवश्यक जानकारी होती है। एक बार जब कोई विलय संस्करण काम करने के लिए मिलता है, तो वे अपने विलय परिवर्तनों को धक्का दे सकते हैं और फिर किसी और को प्रयास को दोहराना नहीं पड़ता है।
सबसे बड़ी बाधा यह है कि आपको अपने डेवलपर्स और प्रबंधकों के दिमाग को पुनर्जीवित करने की आवश्यकता है ताकि वे एकल रैखिक शाखा मॉडल से दूर हो जाएं। इसके लिए सबसे अच्छी दवा लिनस टोरवाल्ड्स की खुराक है जो आपको बताती है कि आप stupid and ugly हैं यदि आप केंद्रीकृत एससीएम का उपयोग करते हैं। अच्छा इतिहास विज़ुअलाइजेशन टूल मदद करेगा लेकिन मैं अभी तक उपलब्ध नहीं हूं।
Mercurial और CVS दोनों डेवलपर्स के साथ विंडोज, लिनक्स और सोलारिस के मिश्रण का उपयोग करके हमारे लिए अच्छा काम करते हैं, और मैंने टाइमज़ोन के साथ कोई समस्या नहीं देखी है। (वास्तव में, यह बहुत कठिन नहीं है; आप केवल आंतरिक रूप से युग सेकंड का उपयोग करते हैं, और मुझे उम्मीद है कि सभी प्रमुख एससीएम सिस्टम इसे सही मानेंगे)।
मेर्कुरियल में हमारे मुख्य सीवीएस इतिहास को आयात करने के लिए उचित प्रयास के साथ, यह संभव था। अगर इतिहास जानबूझकर टूल्स का परीक्षण करने के तरीके के रूप में लोगों ने जानबूझकर हमारे मुख्य लाइन सीवीएस इतिहास में कोने के मामलों को जानबूझकर पेश नहीं किया होता तो यह आसान होता। इसमें कुछ मर्कुरियल शाखाओं को सीवीएस इतिहास में विलय करना शामिल था, इसलिए प्रोजेक्ट ऐसा लगता है कि यह पहले दिन से उपयोग कर रहा था।
हमारे सिलिकॉन डिज़ाइन समूह ने सबवर्जन चुना। वे मुख्य रूप से मेरे कार्यालय से आठ टाइमज़ोन दूर हैं, और यहां तक कि हमारे कार्यालयों के बीच काफी अच्छी समर्पित लाइन पर भी SUBversion चेकआउट दर्दनाक हैं, लेकिन व्यावहारिक हैं। केंद्रीकृत प्रणालियों का एक बड़ा फायदा यह है कि आप संभावित रूप से सभी वितरित भंडारों को बिना किसी बड़े बिनरी (उदाहरण के लिए विक्रेता रिलीज़) की जांच कर सकते हैं।
हम लिनक्स कर्नेल के साथ काम करने के लिए गिट का उपयोग करते हैं। मूल विंडोज संस्करण परिपक्व होने के बाद गिट हमारे लिए अधिक उपयुक्त होगा, लेकिन मुझे लगता है कि मर्कुरियल डिज़ाइन इतना आसान और सुरुचिपूर्ण है कि हम इसके साथ रहेंगे।
डीवीसीएस कम विलय संघर्ष कैसे करता है? और यदि आप एक नियमित वीसीएस में विलय करते हैं, तो आप बैक अप नहीं ले सकते हैं और इसे फिर से कर सकते हैं और उस परिणाम में जांच सकते हैं। –
एक डीवीसीएस प्रबंधन को आसान बनाने में विलय करता है क्योंकि प्रत्येक व्यक्ति चेक-इन छोटा होता है, क्योंकि जब आप पूरा कर लेते हैं तो आप उन्हें स्थानीय रूप से कर सकते हैं। यह सिस्टम को चीजों को बदलने के तरीके के बारे में एक बेहतर अनाजपूर्ण दृश्य देता है, जिससे इसे मर्ज करने के लिए आसान बना दिया जाता है। एक नियमित वीसीएस के साथ, आप बैक अप और विलय को उसी तरह से दोबारा नहीं कर सकते क्योंकि आपके कोड की स्थिति कहीं भी दर्ज नहीं की गई थी। यह किसी भी चेक में नहीं है। इसलिए जब आप रेपो की स्थिति वापस ले सकते हैं, तो आपके परिवर्तन खोने की संभावना है। एक डीवीसीएस में, आप पहले अपने बदलाव कर सकते हैं, इसलिए मर्ज के दोनों तरफ पूर्ण इतिहास है। – tghw
दूसरी तरफ एक डीवीसीएस विवादों को विलय करने से बचाता है यह है कि इसमें पिछले विलय का इतिहास है, इसलिए यदि कोई बदलाव पहले से ही विलय हो गया है, तो सिस्टम इसे फिर से कोशिश नहीं करता है और विलय नहीं करता है, जबकि सबवर्सन जैसे सामान्य वीसीएस सिस्टम में उसमें परिवर्तन शामिल होगा एक संघर्ष की संभावनाओं में वृद्धि, विलय। – tghw