2009-07-22 15 views
10

वितरित संशोधन नियंत्रण प्रणाली के फायदे और नुकसान क्या हैं?वितरित संशोधन नियंत्रण प्रणाली के पेशेवरों और विपक्ष?

आप Git, Mercurial, Plastic SCM, etc. अपने अनुभव को साझा कृपया की तरह वितरण प्रणाली के साथ किसी भी अनुभव है। हमें बताएं कि क्या अच्छा काम करता है और जहां समस्याएं उत्पन्न हुईं।

मैं विशेष रूप से पारंपरिक, वाणिज्यिक, गैर-मुक्त स्रोत परियोजनाओं में वितरित सिस्टम के उपयोग के बारे में सुनना चाहता हूं लेकिन अन्य उपयोगों के बारे में उत्तर भी स्वागत है।

+1

http://stackoverflow.com/search?q=distributed+version+control – arathorn

उत्तर

6

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

हम Mercurial का उपयोग करते हैं, लेकिन विशिष्ट उपकरण केंद्रीकृत के विपरीत वितरित संस्करण नियंत्रण का उपयोग करने के सामान्य वर्कफ़्लो से कम महत्वपूर्ण है। मेरे अनुभव में एक दो बड़ा उत्पादकता के लिए लाभ है कि मैं अब बिना काम करना चाहता हूँ:

  1. सबसे पहले: शाखाओं और विलय आसान है। यह वितरित होने का एक दुष्प्रभाव है, सख्ती से एक आवश्यकता नहीं है, लेकिन यह एक डीवीसीएस के लिए महत्वपूर्ण है और मुझे अपने काम के लिए यह महत्वपूर्ण लगता है। हम में से प्रत्येक व्यक्ति को प्रत्येक सुविधा को स्वतंत्र रूप से ब्रांच कर सकते हैं जिस पर हमें काम करने की ज़रूरत है, इसे सैंडबॉक्स में काम करें (हमारे साझा भंडार से हस्तक्षेप किए बिना) और जब हम तैयार हों तो इसे वापस विलय करें। दूसरे के परिवर्तनों के साथ "जारी रखना" कभी-कभी मर्ज करने के विकल्प के साथ, मर्ज को फेंकने के विकल्प के साथ और संघर्ष को हल करने से निपटने के मामले में जारी रहना इस पल में बहुत अधिक प्रयास है। हम विशिष्ट परिवर्तनों को पकड़ सकते हैं और उन्हें टेस्ट शाखा में एक साथ फेंक सकते हैं, और अगर हम उन्हें पसंद करते हैं तो उन्हें नज़रअंदाज़ करते हैं या उन्हें टॉस करते हैं। चीजों को आज़माने, उन्हें साझा करने और केवल सर्वोत्तम परिणामों को रखने की क्षमता गंभीर लाभ है। जैसा कि मैंने कहा है कि यह एक नहीं है, मैं इस बिंदु पर बिना आराम से काम कर सकता हूं।
  2. ऑफ़लाइन काम करना। यह एक बड़े सौदे की तरह नहीं लगता है, जब तक कि आप अपने सामान्य वातावरण में काम नहीं कर रहे हों। मैं छुट्टी, या यात्रा पर जा सकता हूं, या आउटेज कर सकता हूं, या बस अपने लैपटॉप को एक अच्छे दिन के बाहर ले जाना चाहता हूं, और काम करना जारी रखता हूं। काम करने से रोकने के बिना उठने और जाने में सक्षम होने का मनोवैज्ञानिक लाभ, या मेरे काम की जांच करने की मेरी क्षमता खोना बहुत वास्तविक है।

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

हम शिकायतों का एक बहुत जरूरत नहीं है। कुछ लोगों को इसका उपयोग करने में मदद मिलती है, हालांकि मर्कुरियल का कमांड सेट सबवर्जन के लिए काफी करीब है (जिसे हम उपयोग करते थे) कि हमें बहुत परेशानी नहीं हुई है। यहां तक ​​कि कभी-कभी गंदगी, गलती से बाइनरी या फ़ाइलों को चेक-इन नहीं किया जाना चाहिए में जाँच की तरह, हम चारों ओर क्योंकि हम उन परिवर्तनों के बिना भंडार हमारे मुख्य एक फिर से बनाने, और जगह ले सकता है अगर हम करने की आवश्यकता हो सकती है। यह लोगों के बड़े समूह के लिए अच्छी तरह से स्केल नहीं करता है, लेकिन एक छोटी 3-4 व्यक्ति टीम के लिए काफी अच्छा काम करता है।

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

मैं मर्क्युरियल साथ विशेष मुद्दों (मैं वास्तव में चाहते हैं नामित शाखा समर्थन सिर्फ एक थोड़ा थोड़ा आसान होने के लिए) और है Git के साथ (मैं वास्तव में, आदेश अधिक सहज ज्ञान युक्त होना निर्धारित चाहते हैं अब भी), लेकिन वे शिकायतों हैं कोने के मुद्दों के बारे में जो महान परिचितता के साथ आते हैं। वे तब भी संभव नहीं होंगे जब इन उपकरणों ने लिफाफे को धक्का नहीं दिया था जो मैंने सोचा था कि वीसीएस उन चीजों से कहीं ज्यादा कर सकता था जो मैंने उन्हें शुरू करने से पहले पता था।

+0

वितरित संशोधन नियंत्रण प्रणालियों के अन्य नकारात्मक (कम से कम जो मुझे गिट पर मिला) रेपो को पकड़ने के लिए उपयोग की जाने वाली जगह है। उदाहरण के लिए 5 शाखाओं के साथ उबंटू क्वांटल स्रोत का 460 एमबी एचडीडी पर 1.2 जीबी लेगा। यहां तक ​​कि यदि स्थानीय मशीनों पर मौजूदा एचडीडी आकारों के लिए यह कोई बड़ी समस्या नहीं है, तो भी आपको पहली बार खींचने पर नेटवर्क के माध्यम से 700 एमबी से अधिक खींचना होगा। @quark उत्तर का समर्थन करने के लिए बस मेरे 3 सेंट :) –

2

मैंने अन्य वितरित सिस्टमों की कोशिश नहीं की है, इसलिए उन पर टिप्पणी नहीं कर सकते हैं। लेकिन एक बात जो मुझे गिट के बारे में परेशान करती है वह केवल भंडार के क्लोन हिस्से का कोई तरीका नहीं है। आखिरी बार मैंने जांच की, इसमें svn: externals जैसी चीजों की भी कमी है। मुझे लगता है कि अन्य रिपॉजिटरीज आदि से पुस्तकालयों की जांच के लिए अक्सर एसवीएन बाहरी का उपयोग किया जाता है।

+1

आप गिट में सबमिड्यूल को परिभाषित कर सकते हैं जो आपको केवल सबमिशन क्लोन करने की अनुमति देता है, इसके लिए, इसके लिए आपके भंडार में पहले से ही संरचना होनी चाहिए, आप नहीं कर सकते जब आप क्लोन करते हैं तो इसे करें। – txwikinger

+0

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

3

जीआईटी बनाम एसवीएन और केंद्रीय बनाम वितरित सिस्टम के बारे में बहुत सारी जानकारी के लिए स्टैक ओवरफ्लो पर question पढ़ें।

2

हाँ, इसके लिए स्टैक ओवरफ्लो प्रश्न चेकआउट करें। यदि आप अन्य संशोधन नियंत्रण प्रणालियों की तुलना में गिट की तुलना में कोई और जानकारी चाहते हैं, तो इसके लिए एक अच्छी जानकारीपूर्ण साइट है: Why Is Git Better Than X?

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