2010-07-24 15 views
6

के साथ सतत एकीकरण मुझे लगता है कि मैं कुछ गलत समझता हूं लेकिन वास्तव में क्या नहीं ढूंढ सकता। मैं googled, लेकिन विचार नहीं मिला। दो लोकप्रिय तकनीकें हैं - निरंतर एकीकरण और वितरित स्रोत कोड नियंत्रण। लोग किसी भी तरह उन्हें गठबंधन करते हैं, लेकिन मुझे समझ में नहीं आता कि कैसे।वितरित स्रोत कोड नियंत्रण

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

तो आप इन दोनों चीजों को एक साथ कैसे और कब जोड़ते हैं? या क्या मैंने गलत कहा है?

संपादित

मैं पहले तीन जवाब पढ़ें। आपके उत्तर के लिए धन्यवाद। मैं अभी भी उलझन में हूं, लेकिन अब मैं सवाल को और सटीक बना सकता हूं।

वितरित प्रणालियों में अक्सर निरंतर काम करने की इच्छा नहीं होती है, फिर केंद्रीकृत में। तो सीआई का अनुपालन करने के लिए वितरित सिस्टम में कितनी बार प्रकाशित करना है इस पर कोई दिशानिर्देश हैं? क्या यह अभी भी दिन में कई बार है या क्या इस नियम का एक और संस्करण है?

+0

लोग इसका परीक्षण पक्ष का मतलब अक्सर "निरंतर एकीकरण" का उपयोग करते हैं, यानी केंद्रीय भंडार में प्रत्येक प्रतिबद्धता का स्वचालित निर्माण और परीक्षण। – Rup

+0

कुछ मामलों में, हाँ, लेकिन बाकी के बारे में क्या? आमतौर पर यह भी अक्सर काम करता है। –

+0

DVCS के संयोजन के उदाहरण के लिए http://stackoverflow.com/questions/3209208/what-is-the-cleverest-use-of-source-repository-that-you-have-ever-seen/3209767#3209767 यह भी देखें और सीआई। – VonC

उत्तर

3

वितरित स्रोत नियंत्रण और निरंतर एकीकरण परस्पर अनन्य अवधारणाएं नहीं हैं। वास्तव में वे एक साथ बहुत अच्छी तरह से खेलते हैं।

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

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

व्यक्तिगत डेवलपर निर्णय लेता है कि जब क्या धक्का दिया जाता है/प्रकाशित किया जाता है। हमेशा के रूप में, अतिरिक्त शक्ति के साथ अतिरिक्त जिम्मेदारी आता है।


जब भी वे तैयार हों, आपको परिवर्तनों को धक्का/प्रकाशित करना चाहिए। उदाहरण के लिए मैं एक वर्ग का नाम बदलना चाहता हूं। यह केवल कुछ लाइनों के बावजूद, 50+ फाइलों को छूएगा। मैं एक रिफैक्टरिंग टूल का उपयोग कर नाम बदलता हूं।

एक केंद्रीकृत प्रणाली में मुझे अब यह तय करना होगा कि क्या वास्तव में यह स्वयं के लिए प्रतिबद्ध है या यदि यह काम के एक बड़े टुकड़े का हिस्सा है, तो मैं वर्तमान में काम कर रहा हूं। अनुभव से बाहर, लोग आमतौर पर दूसरा विकल्प चुनते हैं, क्योंकि आप निश्चित नहीं हैं कि आप अभी तक स्थायी इतिहास का हिस्सा बनना चाहते हैं।

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

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

निश्चित रूप से आप अभी प्रकाशित कर सकते हैं कि उस क्षण को बदल दें जो आपने किया था। दोनों प्रणालियों में। ज़िम्मेदारी सिर्फ वही है। लेकिन चूंकि डीवीसीएस आपको छोटे, वृद्धिशील काम करने के लिए प्रोत्साहित करता है, विलय करना आसान होगा। यदि आप अपने परिवर्तनों को जल्दी प्रकाशित करते हैं तो दोनों सिस्टम आपको उस स्थिति से बाहर "बाहर निकलने की रणनीति" प्रदान कर सकते थे।

+0

ठीक है, मैं इसे इस तरह के विस्तृत उत्तर के समाधान के रूप में देखता हूं, हालांकि ऐसा लगता है कि दो तकनीशियन अच्छी तरह से नहीं हैं। –

1

निरंतर एकीकरण सिस्टम एक उपकरण है (उदाहरण के लिए क्रूज़ कंट्रोल) जो हर एन मिनट में आपके स्रोत कोड भंडार पर नज़र रखता है।

हर बार कुछ बदलता है (कोई कोड कोड करता है), सीआई कूदता है, सभी परीक्षण चलाता है और फिर ईमेल या स्क्रीन की तरह आउटपुट (विफलताओं या नहीं) भेजता है।

सीआई आपके द्वारा उपयोग किए जाने वाले वीसीएस के प्रकार, चाहे वितरित किया गया हो या नहीं, किसी भी तरह से निर्भर नहीं है।

+0

वीसी मतदान का सुझाव देने के लिए डाउनवोट करने का लुत्फ उठाया;) – marcv81

1

इसमें कई तत्व हैं, कुछ सॉफ़्टवेयर के साथ कुछ करने के लिए, प्रक्रिया के साथ कुछ करने के लिए।

संस्करण नियंत्रण प्रणाली केवल संस्करण नियंत्रण हैं। वापस रोल, शाखा और मर्ज करने की क्षमता, आदि कि क्या वे केंद्रीकृत या वितरित हैं और दोनों के ऊपर और नीचे पक्ष हैं। वीसीएस प्रति से आपको बेहतर कोड चलाने या परियोजनाओं को चलाने में मदद नहीं करता है, इसलिए टीमों में विकास की प्रक्रिया को सुविधाजनक बनाने में मदद मिलती है, जब टीमों को ठीक से चलाया जाता है। दूसरे शब्दों में आप बिना एसवीएन या मर्कुरियल का उपयोग करके रॉयली के रूप में स्क्रू कर सकते हैं जैसा कि आप इसके बिना कर सकते हैं।

जहां सीआई कई दिनों के लिए कोड की बजाय आता है और फिर प्रतिबद्ध होता है, फिर परियोजना और परीक्षण का निर्माण करता है, कोडर अधिक बार प्रतिबद्ध होता है, 1/2 दिन 1 दिन (अधिकतम) और परियोजना का निर्माण और परीक्षण किया जाता है (जारी नहीं किया जाता है जीने के लिए)। इसका मतलब है कि किसी भी त्रुटि को पहले उठाया जाता है और इसे कम आसानी से संशोधित किया जा सकता है क्योंकि कम कोड किया गया है और प्रोग्रामर मेमोरी ताजा है।

सीआई मैन्युअल रूप से किया जा सकता है, या इसे स्क्रिप्ट किया जा सकता है, सीएलआई स्क्रिप्ट लिखना, या सीवीएस के साथ एकीकृत करने वाले सीआई सॉफ्टवेयर उपकरणों की संख्या में से एक को स्वचालित रूप से या अर्ध स्वचालित रूप से करने के लिए सेटअप किया जा सकता है प्रबंधन और गलतियों को करने की क्षमता को कम करें।

मौजूदा उपकरण, मर्कुरियल + हडसन, या एसवीएन और क्रूज़ कंट्रोल का उपयोग करने का लाभ यह है कि आप उन लोगों के ज्ञान और अनुभव पर समर्थन कर रहे हैं जो शायद किसी बिंदु पर रॉयली खराब हो गए लेकिन सबक सीखा। हालांकि आप इसे नहीं कर सकते हैं, इसे बॉक्स से बाहर निकालें और इसका इस्तेमाल करें और उम्मीद करें कि यह मिश्रण में अपनी परियोजना के लिए अपनी प्रक्रिया को जोड़ने के साथ काम करे।

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