2010-03-19 10 views
9

यह एक मूर्खतापूर्ण सवाल लग सकता है लेकिन है कि कैसे आप एक काम drectory से बाहर की जाँच करने के लिए एक सर्वर के बिना की स्थापना मिलता है? और एक व्यापार रेपो की एक सुरक्षित बैक अप प्रतिलिपि कैसे रखता है?क्या एक वितरित संस्करण नियंत्रण प्रणाली में वास्तव में कोई केंद्रीकृत भंडार नहीं है?

मुझे लगता है कि वहां एक केंद्रीय रेपो होना चाहिए ... लेकिन फिर यह वास्तव में 'वितरित' कैसे होता है? मैंने हमेशा एक सर्वर-क्लाइंट (एसवीएन) बनाम पीयर-2-पीयर (जीआईटी) भेद के बारे में सोचा, लेकिन मुझे विश्वास नहीं है कि यह सही हो सकता है जब तक कि जीआईटी जैसे उपकरण टोरेंट-शैली तकनीक पर निर्भर न हों?

उत्तर

7

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

+0

प्राधिकरण के लिए +1, जो एक कीवर्ड है। –

5
वितरित संस्करण नियंत्रण के साथ

, आप पूरे इतिहास की एक पूरी कॉपी (पूरे भंडार) आपके स्थानीय (चेक आउट) की नकल के भाग के रूप एम्बेडेड हो सकता है।

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

उदाहरण के लिए, लिनक्स कर्नेल को देखो: बहुत से लोग "क्लोन" कहीं से एक गिरी पेड़ की जाँच करेगा। यह लिनस का पेड़ हो सकता है, या यह kernel.org या इंटरनेट के चारों ओर तैरने वाले अन्य पेड़ों में से एक हो सकता है। लेकिन लिनस का पेड़ कर्नेल.org और (संभवतः) लिनस के कंप्यूटर (और वहां से खींचने वाले किसी और के कंप्यूटर) पर मौजूद है।

जोएल के नवीनतम blog post वर्णित फायदे (और सबवर्सन की तरह सिस्टम से बड़ा अंतर) एक DVCS सर्वश्रेष्ठ में से:

जब आप के बजाय संस्करणों के प्रबंधन, काम करता है बेहतर विलय की परिवर्तनों को प्रबंधित है, और इसलिए, आप किसी भी शाखा कर सकते हैं आपके संगठनात्मक लक्ष्यों को समय की आवश्यकता होती है, क्योंकि वापस विलय करना केक का एक टुकड़ा होगा।

तो आप कुछ केंद्रीय सर्वर पर पेड़ की प्रतिलिपि कहीं और डाल सकते हैं कि अन्य लोग (या आपके निजी सर्वर पर आपके पास बैकअप लें) और जब आप इसे महसूस करते हैं, तो आप कुछ बिट्स को धक्का देते हैं क्या आप वहां मौजूद हैं। फिर अगर कोई प्रतिलिपि चाहता है, तो वे वहां से क्लोन कर सकते हैं।

2

तकनीकी रूप से, डीवीसीएस को केंद्रीकृत भंडार की आवश्यकता नहीं है।

वास्तविक जीवन में, एक आवेदन पत्र (जैसे एक लिनक्स कर्नेल) वितरित किए जाने से पहले सूत्रों के एक भी सहमति संग्रह से बनाए गए हों।

इस तरह, डीवीसीएस किसी भी स्रोत प्रबंधन नीति को लागू नहीं करता है और ऐसे प्रबंधकों को परियोजना प्रबंधकों को छोड़ देता है।

1

"पीयर-टू-पीयर" समानता वास्तव में how you get changes किसी अन्य रेपो से संदर्भित करती है।

  • एक डीवीसीएस के साथ, आप परिवर्तन लाते हैं, और फिर यदि आप चाहें तो उन्हें मर्ज करना चुनते हैं।
  • एक सीवीएस आप परिवर्तनों को अद्यतन करता है, जो प्रभाव सीधे अपने कार्यक्षेत्र

आप किसी भी अन्य "सहकर्मी" रिपोजिटरी से (एक रेपो का हिस्सा है जो एक ही पहले प्रतिबद्ध) लाने कर सकते हैं, तो आप इस एक peer-to-peer model विचार कर सकते हैं के साथ , चूंकि:

सहकर्मी पारंपरिक क्लाइंट-सर्वर मॉडल के विपरीत आपूर्तिकर्ताओं और संसाधनों के उपभोक्ता दोनों हैं, जहां केवल सर्वर की आपूर्ति होती है, और ग्राहक उपभोग करते हैं।

6

एक महत्वपूर्ण यहाँ बनाने के लिए गौरव प्राप्त है: वहाँ एक तकनीकी केंद्रीय सर्वर, या है वहाँ एक सम्मेलन द्वारा।

तकनीकी रूप से एक गिट भंडार के सभी क्लोन समकक्ष हैं। उनमें से सभी एक दूसरे के साथ विलय, चेक-इन, शाखाओं, विलय की अनुमति देते हैं। कोई भी भंडार नहीं है जो कि किसी भी तरह से "अधिक सत्य" है।

सामाजिक सम्मेलन द्वारा गिट का उपयोग करने वाली अधिकांश परियोजनाओं में केंद्रीय भंडार होता है जिसे आधिकारिक भंडार माना जाता है, जो परियोजना की आधिकारिक स्थिति का प्रतिनिधित्व करता है।

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

9

क्या वितरित संस्करण नियंत्रण प्रणाली में वास्तव में कोई केंद्रीकृत भंडार नहीं है?

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

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

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

लेकिन सामान्यतः होता है क्या आपके पास एक भंडार है जो केंद्रीय सर्वर पर है, जिससे लोगों को शुरू करना आसान हो जाता है, और नवीनतम परिवर्तन कहां ट्रैक किया जाता है।

किसी सर्वर के बिना जांच करने के लिए आप एक काम करने वाली डैक्टरी सेट कैसे प्राप्त करते हैं?

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

Mercurial और Git दोनों एक छिपी उपनिर्देशिका में भंडार रखते हैं, इसलिए एक निर्देशिका वृक्ष में आपकी कार्यशील प्रतिलिपि होती है (जो आप जो भी राज्य चाहते हैं), और रेपो स्वयं ही।

और व्यवसाय कैसे रेपो की एक सुरक्षित बैक अप प्रतिलिपि रखता है?

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

मुझे लगता है कि वहां एक केंद्रीय रेपो होना चाहिए ... लेकिन फिर यह वास्तव में 'वितरित' कैसे होता है? मैंने हमेशा एक सर्वर-क्लाइंट (एसवीएन) बनाम पीयर-2-पीयर (जीआईटी) भेद के बारे में सोचा, लेकिन मुझे विश्वास नहीं है कि यह सही हो सकता है जब तक कि जीआईटी जैसे उपकरण टोरेंट-शैली तकनीक पर निर्भर न हों?

यह इस अर्थ में वितरित नहीं किया गया है कि विभिन्न ग्राहकों के पास पीयर-टू-पीयर फ़ाइल साझाकरण जैसे विभिन्न हिस्सों हैं। यह वास्तव में केंद्रीकृत मॉडल के विपरीत है।

सभी डीवीसीएस भंडार प्रथम श्रेणी के नागरिक हैं। तकनीकी समस्या के बजाए उन्हें व्यवस्थित करने का तरीका सामाजिक या प्रबंधकीय प्रश्न बन जाता है।

0

तकनीकी रूप से आपको केंद्रीय सर्वर की आवश्यकता नहीं है: आप केवल अपने साथियों के साथ प्रतिबद्धता का आदान-प्रदान कर सकते हैं और यही वह है।

तार्किक रूप से (केवल github.com पर एक नज़र डालें) हमेशा एक केंद्रीय भंडार (कम से कम) एक केंद्रीय भंडार होगा, कुछ प्रकार की "मास्टर कॉपी" पर भरोसा करना होगा। मुझे लगता है कि लिनक्स कर्नेल पर लिनस 'रेपो मास्टर मास्टर है जिसमें से अंततः परिवर्तन स्वीकार किए जाते हैं, है ना?

मुझे लगता है कि यह डीवीसीएस को गले लगाने वाली कंपनियों के लिए विशेष रूप से सच होगा: वे डेवलपर्स की "प्रतियों" पर भरोसा नहीं करेंगे, लेकिन केंद्रीय रूप से, हालांकि, स्पष्ट रूप से, केवल एक प्रति से अधिक हो सकता है (जो कि बचने के लिए बहुत अच्छा है आपदा भी :- पी, और DVCS के साथ स्वाभाविक रूप से होता है)

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