संस्करण नियंत्रण अभ्यासों के लिए


29

हमने भाषा X में एक उत्पाद (प्रोटोटाइप) P_OLD विकसित किया है और अब हम इसे भाषा में P_NEW के रूप में स्क्रैच से फिर से लिख रहे हैं।

चूंकि P_NEW और P_OLD एक ही उत्पाद हैं:

क्या P_NEW को केवल P_OLD पुराना का ब्राच होना चाहिए या यह स्वयं का भंडार होना चाहिए?

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


संबंधित (संभवतः एक डुप्लिकेट): एकल या कई परियोजनाओं के बीच
gnat

@gnat लिंक के लिए धन्यवाद। यह दिलचस्प है, लेकिन मुख्य अंतर यह है कि हमारे लिए यह एक ही उत्पाद है, बस पूरी तरह से बदल दिया गया है। पुरानी परियोजना मूल रूप से एक (बदसूरत) प्रोटोटाइप थी।
1v0

जवाबों:


46

आप लगभग निश्चित रूप से एक नया भंडार चाहते हैं।

भंडार का उद्देश्य है:

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

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

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


2
संक्रमण की लंबाई के आधार पर, तुलना के लिए पिछले जीवित और आसानी से सुलभ होना उपयोगी है। यहां तक ​​कि आप पुरानी प्रणाली में परीक्षण मामलों को पेश करने में मदद कर सकते हैं जो आपको नई प्रणाली में परिणाम से मिलान करने में मदद करते हैं।
एरिक

16

मैं हमेशा नए रिपॉजिटरी में खुद को फिर से लिखता हूं। इस तरह से निर्माण, परीक्षण और तैनाती सभी स्वतंत्र रूप से की जा सकती है।

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


5

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

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

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