आप सीएस क्षेत्र में नहीं है, जो एक [वितरित] संस्करण नियंत्रण प्रणाली का उपयोग करने के महत्व को कैसे समझाते हैं? [बन्द है]


13

किसी व्यक्ति का एक अच्छा उदाहरण जो उस विवरण को फिट करता है वह एक परियोजना प्रबंधक हो सकता है।

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

मैंने उसे BitBucket की ओर इशारा करते हुए समाप्त किया क्योंकि वे आपको असीमित निजी रिपॉजिटरी देते हैं (मुझे यह भी बताना था कि रिपॉजिटरी क्या है।)

क्या किसी के पास वास्तव में अच्छे ठोस उदाहरण हैं कि कैसे एक वीसीएस ने अपने गधे को बचाया है या जीवन को आसान बना दिया है, आदि - मूल रूप से, आप किसी को डीवीएससी कैसे बेचेंगे जो प्रोग्रामिंग से अपरिचित नहीं है, लेकिन पेशे से प्रोग्रामर नहीं है?



4
क्या यह वीसीएस के बारे में सामान्य या वितरित वी गैर-वितरित है?
जेफ

2
सुबह उसकी हार्ड ड्राइव को खोलकर अपने डेस्क पर रख दिया। तब उसे महत्व का एहसास होगा।
एंड्रयू टी फिनेल

जवाबों:


6

संस्करण नियंत्रण (कम से कम) तीन चार चीजों के लिए बहुत अच्छा है: बैकअप, डेवलपर्स के बीच कोड साझा करना, बग फिक्स करना और प्रगति ट्रैकिंग।

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

  2. डेवलपर्स के बीच कोड साझा करना । यदि आपके पास कम से कम दो डेवलपर्स एक ही उत्पाद पर एक साथ काम कर रहे हैं, तो मुझे किसी अन्य तरीके से मज़बूती से और लगातार कोड परिवर्तन साझा करने और उन्हें विलय करने का कोई रास्ता नहीं दिखता है। मेल द्वारा ज़िप भेजना?

  3. बग ढूंढना और ठीक करना । जब आपके ग्राहक किसी विशिष्ट उत्पाद संस्करण के लिए बग की रिपोर्ट करते हैं, तो आप उसे पुन: उत्पन्न करने और ठीक करने के लिए वास्तविक स्रोत स्नैपशॉट प्राप्त कर सकते हैं। यदि आपका स्रोत ग्राहक से भिन्न है, तो बग को पुन: उत्पन्न करना कठिन है। क्या आप उन्हें निष्पादन योग्य भेजने के लिए कहते हैं ताकि आप इसे अलग कर सकें? इसके अलावा, अगर आपको बग के कारण की पहचान करने में समस्या है, तो आप वीसीएस का उपयोग उस सटीक संशोधन को इंगित करने के लिए कर सकते हैं जहां इसे पेश किया गया था।

  4. प्रगति ट्रैकिंग । जब आप स्नैपशॉट में अपना काम करते हैं, तो यह आपको (और आपके प्रबंधक) सुविधा कार्यान्वयन और खुले बग की स्थिति पर प्रगति को ट्रैक करने की अनुमति देता है। VC सिस्टम को आसानी से ट्रैकिंग सिस्टम और निरंतर एकीकरण सिस्टम के साथ एकीकृत किया जाता है। जब तक आपके पास वीसीएस न हो, शौक के अलावा किसी और चीज के लिए गुणवत्ता का स्तर रखना असंभव है।

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

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

बग प्रजनन का उल्लेख करने के लिए +1। मैंने ऐसा कभी नहीं सोचा है!
डेविड काउडन

31

"क्या आपने कभी 'पूर्ववत' बटन को उपयोगी पाया है? ओह, तो आप सहमत हैं कि हमें एक संस्करण नियंत्रण का उपयोग करना चाहिए?"

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


1
यह किसी भी तरह से फिट है कि एक पूर्ववत बटन की अवधारणा के आसपास रहने वाला एक उत्तर उपयोगकर्ता @ बटंस840 द्वारा पोस्ट किया गया है
डेविड

9

मूल बातें से शुरू करें:

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

दूसरे यह एक ऑडिट ट्रेल प्रदान करता है - एक इतिहास - आप वापस जा सकते हैं और देख सकते हैं कि किसने और कब बदला और आप वापस जा सकते हैं और उस कोड को पुनः प्राप्त कर सकते हैं जिसे आपने हटा दिया था क्योंकि अब इसकी आवश्यकता नहीं थी या जब यह पता चलेगा कि इसकी आवश्यकता है सब।

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

VCS को बेचने के लिए उन तीन चीजों को "यह" होना चाहिए - यदि कोई प्रबंधक किसी अन्य प्रबंधक को खोजने के लिए उपरोक्त समय में पर्याप्त मूल्य नहीं देख सकता है।

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


5

VCSs

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

संक्षेप में : VCS आपको अपने काम के बैकअप को सहेजने देता है और आपको केवल बैकअप के बीच अंतर देखने की क्षमता देता है

DVCSs

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

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

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


मुझे लगता है कि डेवलपर्स के लिए सबसे खराब परिदृश्य के बारे में सोचना विशिष्ट है ... उन्हें इसका एक पैथोलॉजिकल डर है। यह बहुत ही रोचक है ...
रादु मुराज़े

बहुत ज्यादा बोल्ड !!
डेविड काउडन

2

मैं ज्यादातर इंजीनियरों के साथ काम करता हूं (प्रति से डेवलपर्स नहीं, लेकिन वे कोड लिखते हैं)

मुख्य बिंदु, जब मैं उन्हें संस्करण नियंत्रण के बारे में समझाता हूं, तो आपके कोड / प्रलेखन को पूर्ववत करने और प्रबंधित करने की संभावना है / जो भी हो और अन्य डेवलपर्स / लेखकों / आदि के साथ सहयोग को सरल बनाने ...

यह एक अच्छा विक्रय बिंदु है - और मेरे लिए अपने सभी कार्यों के लिए एक वीसीएस का उपयोग करने का मुख्य कारण था, अन्य फायदे भी हैं: एक इतिहास, एक रेपो, जिसे आसानी से बैकअप लिया जा सकता है ...

उनमें से अधिकांश विचार पसंद करते हैं और इसे अपनी परियोजनाओं के लिए अपनाते हुए काफी उपयोगी पाते हैं (विशेषकर यदि वे अन्य इंजीनियरों के साथ सहयोग करते हैं)।


2

किसी भी चीज को समझाने की कोशिश करते समय, आपको हमेशा उनके दृष्टिकोण से इस पर आने की कोशिश करनी चाहिए।

आपके प्रोजेक्ट मैनेजर का एक सरल लक्ष्य है - समय पर और बजट पर परियोजनाओं को पूरा करना।

यदि आप वर्तमान में संस्करण नियंत्रण का उपयोग नहीं कर रहे हैं, तो आपकी विकास टीम उन समस्याओं को हल कर रही है जो संस्करण नियंत्रण हाथ से हल करते हैं। उन सभी समस्याओं को अन्य उत्तरों द्वारा अच्छी तरह से सम्‍मिलित किया गया है, इसलिए मैं उनके यहाँ नहीं जाऊँगा।

आपको अपने प्रोजेक्ट मैनेजर को यह समझाने की जरूरत है कि टीम Xहर हफ्ते मैन्युअल रूप से उन समस्याओं को हल करने में घंटों की संख्या खर्च कर रही है जो जीआईटी अपने आप हल कर सकती हैं, या कह सकती हैं, 0.1 * Xडेवलपर घंटों की संख्या।

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


1

मुझे कोड आधार के लिए एक पूर्ववत बटन के रूप में @ Buttons840 का वर्णन पसंद है। यह वर्ड (InDesign) के "ट्रैक चेंजेस" फीचर के एक (कम निराशाजनक) संस्करण से तुलना करने में भी मदद कर सकता है। मेरे अनुभव में, यह निश्चित रूप से अगले कुछ घंटों के लिए एक्स, वाई और जेड फ़ाइलों को नहीं छूने के लिए एक व्यक्ति को घूमने जाने के लिए एक व्यक्ति की आवश्यकता को कम करता है, जो कि चीजों को प्राप्त करने के लिए आसान है।

मुझे ठीक-ठीक संस्करण जानकारी मिली है जो बग्स को ठीक करने / काम करने के लिए अविश्वसनीय रूप से उपयोगी है। मैं लगभग हर डेटा फ़ाइल में SVN संस्करण संख्या ($ Id प्रॉपर्टी के माध्यम से) उत्पन्न करता हूं। इस तरह, अगर (जब?) बग पाया जाता है, तो संभावित समस्याओं वाली फ़ाइलों की पहचान करना और उन्हें पुन: उत्पन्न करना या बग के लिए अन्य कोड की भरपाई करना मामूली है।


1

यदि आप संस्करण नियंत्रण का उपयोग नहीं करते हैं, तो आप कैसे जानते हैं कि अपने उत्पादन वातावरण का पुनर्निर्माण कैसे करें?

1 अलग-अलग लोग (परीक्षक, डेवलपर्स) विभिन्न स्थानों में एक ही जानकारी के लिए देखेंगे

DUPLICATE डेटा के लिए अग्रणी जो सिंक से बाहर निकलता है।
डुप्लिकेट डेटा को खत्म करने के लिए संस्करण नियंत्रण सबसे आसान तरीका है।

2 यदि आप संस्करण नियंत्रण का उपयोग करते हैं, तो उत्पादन वातावरण से यह सुनिश्चित करना आसान है कि संस्करण नियंत्रण में क्या है।

इससे यह पता लगाना आसान हो जाता है कि क्या कोई समस्या एक खराब बिल्ड (प्रोडक्शंस वर्ज़न कंट्रोल से मेल नहीं खाती), या एक डिज़ाइन या कोडिंग बग (प्रोडक्शंस मैच वर्ज़न कंट्रोल से मेल खाती है) के कारण थी।

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


0

इसके अलावा अगर आप सॉफ्टवेयर जारी करते हैं तो VCS का निम्नलिखित फीचर जरूरी है: मान लें कि आपका ग्राहक बग ढूंढ रहा है। सॉफ़्टवेयर का वर्तमान विकास संभवतः उस संस्करण की तुलना में बहुत अलग स्थिति में है जो ग्राहक के पास है। शायद बग अब तय हो गया है, शायद यह नहीं है, लेकिन किसी भी मामले में वर्तमान सॉफ़्टवेयर ऐसी स्थिति में नहीं है कि आप इसे ग्राहक को भेज सकते हैं।

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

इसके अलावा अगर कोई बग अभी भी मौजूद है तो एक VCS आपके लिए इस विकास को वापस नई विकास शाखा में पोर्ट करना आसान बनाता है।

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


0

यदि आपकी कंपनी में दो से अधिक लोग हैं, तो आपके पास शायद एक शब्द दस्तावेज़ या एक एक्सेल दस्तावेज़ है जो कि कई व्यक्तियों द्वारा संपादित किया गया है। और कभी-कभी वे व्यक्ति स्थानीय प्रतियाँ बनाते हैं, व्यापार यात्रा आदि के लिए। या दस्तावेज़ को प्रत्येक परिवर्तन के बाद ईमेल द्वारा भेजा जाता है।

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


2
सिवाय इसके कि वर्ड / एक्सेल दस्तावेज़ हर वीसीएस के लिए अपारदर्शी हैं जो मैंने कभी देखा है। इस स्पष्टीकरण का उपयोग करते समय सावधान रहें!
पीटर टेलर

मुझे ईमेल श्रृंखला उदाहरण का उपयोग करना पसंद है।
डेविड काउडन

0

ओपन सोर्स सॉफ्टवेयर / लाइब्रेरी का चयन करते समय, DVCS रिपॉजिटरी होने से निश्चित रूप से चयन मानदंड में एक फायदा होता है।

1) हम पूरे भंडार को क्लोन कर सकते हैं, इस परियोजना के बारे में चिंता करने की जरूरत नहीं है या इसकी वेबसाइट मृत है।

2) लोग पुल अनुरोध के माध्यम से बग फिक्स को प्रस्तुत करने के लिए अधिक इच्छुक हैं, जिसके परिणामस्वरूप तत्काल मुद्दों के लिए तेजी से बग ठीक हो जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.