मैं निम्न समस्या के लिए एक व्यवहार्य रणनीति खोजने की कोशिश कर रहा हूं।सबवर्जन और निर्भरता
हमारे पास कई वेब परियोजनाएं हैं जो हमारे ढांचे पर निर्भर हैं। सबकुछ हमारे एसवीएन में संग्रहीत होता है और इसकी सभी परियोजनाओं की सभी आवश्यक निर्देशिका संरचना (ट्रंक, टैग, शाखाएं) होती है। उदाहरण में - हमारे पास webprj01 और webprj02 प्रोजेक्ट हैं और हमारे पास फ्रेमवर्क frm01 है। उन सभी में सामान्य एसवीएन परियोजना संरचना है - ट्रंक, टैग, शाखाएं।
webprj01 और webprj01 दोनों frm01 पर निर्भर हैं और वास्तविक जीवन में frm01 webprj01 और webprj02 की उपनिर्देशिका के रूप में मौजूद है। एसवीएन में इसे प्राप्त करने के लिए एसवीएन सेट करना संभव है: बाहरी संपत्ति और हम frpr01 को webprj01 और webprj02 के ट्रंक के अंदर/frm01/trunk पर इंगित करने के लिए सेट कर सकते हैं।
वास्तविक जीवन कोडिंग करने के लिए हमें एक कार्यशील प्रति के रूप में सभी तीन परियोजनाओं की जांच करनी है और अपनी स्वयं की कार्यशील प्रतिलिपि में विशेष कोडबेस में परिवर्तन करना है। Webprj01/frm01 से एसवीएन में परिवर्तन प्रकाशित करने का कोई तरीका नहीं है। परिवर्तन frm01 काम करने की प्रतिलिपि में किया जाना चाहिए और एसवीएन के माध्यम से webprj01/frm01 और webprj02/frm01 काम करने वाली प्रतियों में स्थानांतरित किया जाना चाहिए।
इस समाधान में ब्रांचिंग के दौरान निर्भरताओं के साथ समस्या है। मैं एसवीएन/वेबप्रज 01/ट्रंक से /webprj01/branches/release-1.0.0 तक उत्पादन ब्रांच बना देता हूं। दूसरी परियोजना webprj02 और frm01 पर काम करते समय दो दिनों में मैं एसवीएन के माध्यम से स्थिर चेकआउट नहीं कर पा रहा हूं: शाखा रिलीज-1.0.0 में बाहरी। निर्देशिका frm01 पहले से ही frm01/trunk के नए बदलावों को इंगित करता है।
वर्णित समस्या का एक सरलीकृत संस्करण है। हमारे वास्तविक जीवन स्थितियों में निर्भरता कभी-कभी पांच स्तरों की गहरी होती है। मैं किसी भी समय एसवीएन से स्थिर कोड प्राप्त करने में सक्षम होना चाहता हूं। अलग-अलग शब्दों में। जब मैंने रिलीज-1.0.0 के रूप में webprj01 को ब्रंच किया/टैग किया। मैं सृजन से एक वर्ष में उस विशेष टैग के लिए स्थिर कोड प्राप्त करना चाहता हूं।
यह स्पष्ट है कि एसवीएन का उपयोग करके रणनीति का वर्णन किया गया है: बाहरी काम नहीं करते हैं। इस स्थिति के साथ आपका अनुभव क्या होगा? एक चेकआउट का उपयोग करना आवश्यक नहीं है। बिल्ड स्क्रिप्ट या अन्य समाधान का उपयोग करने से भी यहां मदद मिलेगी। मैं इस मुद्दे के लिए लंबे समय से समाधान की तलाश में हूं जो मानव कार्यों पर भारी निर्भर नहीं करेगा क्योंकि हम गलतियों से ग्रस्त हैं।
मुझे यकीन है कि एसवीएन से एक वितरित संस्करण नियंत्रण प्रणाली में स्विच करके आपके मुद्दों को हल किया जा सकता है - जो शाखा को बहुत आसान बनाना चाहिए, खासकर जब आपको उत्पादन शाखा की आवश्यकता होती है जहां केवल बग फिक्सिंग परिवर्तन एकत्र किए जाने चाहिए। लेकिन मेरे पास पर्याप्त अनुभव नहीं है कि आपको एक पूर्ण उदाहरण लिखने के लिए पर्याप्त अनुभव न हो, इससे आपकी मदद कैसे होगी। शायद आप जोएल के ट्यूटोरियल को एक मौका देंगे (http://hginit.com/) और इसे अपने आप से बाहर कर दें? –
धन्यवाद। मैं इस तरह की चीज से थोड़ा डर रहा हूं - गिट, मर्कुरियल .... लेकिन मैं पहले से ही इसमें देख रहा हूं। – user390133
हाय स्टीफन। हम अपने विकास में बाहरी का उपयोग करते हैं। मैं उत्सुक हूं कि आप क्यों नहीं कर सकते ... "webprj01/frm01 से एसवीएन में परिवर्तन प्रकाशित करें ..." मैं लगातार बाहरी रूप से चेक आउट प्रोजेक्ट में कोड संशोधित कर रहा हूं और इसे जगह में कर रहा हूं। हालांकि, इस बारे में जागरूक होने की एक बात है, और मुझे अभी भी यह याद आती है, यह है कि आप webprj01 की पूरी कामकाजी प्रतिलिपि नहीं कर सकते हैं और साथ ही frm01 भी प्रतिबद्ध कर सकते हैं। आपको webprj01/frm01 पर नेविगेट करने और एक और प्रतिबद्धता करने की आवश्यकता होगी। लेकिन फिर भी, frm01 में काम करने से काम करना, काम करना, फिर webprj01 पर कूदना और एकीकृत करने के लिए एक अद्यतन करना। धन्यवाद, –