2010-03-09 14 views
11

मैं एक बड़ी परियोजना है।SVN विलय ट्रंक और शाखाओं

मैं एक शाखा बनाने की जरूरत है - इस परियोजना का संस्करण 2 हो जाएगा, लेकिन मैं यह भी ट्रंक रखने के लिए और संस्करण 1.

मैं करने के लिए बग समाधान के रूप में समानांतर में इसे बदल शाखा 1 के साथ की जरूरत है शाखा में नई सुविधाओं को जोड़ने के दौरान ट्रंक से बग फिक्स को शाखा 1 में विलय करने की आवश्यकता है।

अंत मैं सभी परिवर्तनों को ट्रंक में वापस विलय और इसे से नए टैग बनाने की जरूरत पर

तो मैं संस्करण 2 के लिए और निश्चित रूप से संस्करण में बग फिक्स विलय 2.

मैं SVN उपयोग कर रहा हूँ लेकिन SVN समस्याओं हर समय बनाता संस्करण 1, नई शाखा के लिए बग समाधान की जरूरत है। मैं विवादों के बिना कुछ भी विलय नहीं कर सकता।

कोई मुझे क्या करना है एक सलाह दे सकते हैं?

सादर

उत्तर

0

आपको पहले अपने संस्करण 1, अपने उत्पाद के एक संस्करण जारी किया है जिसके लिए एक "टैग" बनाया जाना चाहिए था। परियोजना का संस्करण 2 तब ट्रंक की निरंतरता होगी, न कि संस्करण 2 शाखा। शाखा बनाने की एकमात्र वजह यह है कि बग फिक्स को (रील्स) संस्करण 1 में करना है। नए संस्करण के लिए जो कुछ भी आप करते हैं, वह ट्रंक पर किया जाएगा, जब तक आपके पास कारण न हों।

+1

मैंने यह कोशिश की है। लेकिन समस्या बनी हुई है। हमारे पास फिर से बग फिक्स और नई सुविधाओं के लिए एक ट्रंक के लिए एक शाखा है। संस्करण 2 में रिलीज 1 के लिए बग फिक्स विलय - ट्रंक के परिणामस्वरूप बहुत सारे संघर्ष होंगे। svn बिना किसी विवाद के एकल फ़ाइल को विलय नहीं कर सकता है। हाथों से संघर्ष सुलझाने से कई समस्याएं और समय कमर हो सकता है। पुनर्जन्म के साथ विलय करने से मदद नहीं मिलती है! मैं सोच रहा हूं कि अन्य कंपनियां कैसे हल करती हैं - बग फिक्सिंग, नया संस्करण और यह दोनों विलय? ऐसा लगता है कि काम के इस राजा के लिए svn अच्छा नहीं है। –

6

पुराने संस्करण के लिए bugfixes प्रदान करने के उद्देश्य के लिए एक शाखा का निर्माण एक release branch कहा जाता है। आपको ट्रंक पर बग फिक्स विकसित करना चाहिए (क्योंकि उन्हें सभी नए संस्करणों में सही होना चाहिए?)। वहां से आप उन्हें उन संस्करणों में वापस विलय कर सकते हैं जो अभी भी समर्थित हैं। इसका मतलब है कि जब संस्करण 1 अब समर्थित नहीं है, तो आप इसे वापस बग फिक्स विलय करना बंद कर देते हैं। अधिक जानकारी के लिए documentation देखें।

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

आप /branches/1.2.x फिक्सिंग कर रहे हैं, नामकरण परंपरा सबवर्सन परियोजना का उपयोग करता 1.2.xr [REVNUM] नामक एक backport शाखा है, जहां REVNUM संशोधन आप backporting रहे हैं, या 1.2 इंगित करता है बनाने के लिए है। एक्स-इश्यू [ISSUENUM], जहां ISSUENUM उस समस्या को इंगित करता है जिसे आप ठीक कर रहे हैं।

जब आप backport ठीक बना लेने के बाद, आप

svn checkout .../branches/1.2.x myproduct-1.2.x 
svn merge --reintegrate .../branches/1.2.x-r123 myproduct-1.2.x 

साथ रिलीज करने के लिए यह विलय कर सकते हैं शाखा reintegrating के बाद, शाखा हटा दिया जाना चाहिए।

0

सबसे पहले और सबसे महत्वपूर्ण बात यह है कि आपको SVN documentation पर एक जैसा दिखता है जैसा कि @SanderRijken द्वारा सुझाया गया है और देखें कि कौन सी सुविधा और रिलीज शाखाएं हैं।

लेकिन आपके प्रश्न की आवाज़ से मुझे लगता है कि आपकी मुख्य समस्या एक अलग है। अर्थात् कोई विलय "काम नहीं कर रहा है" (यानी सभी उन संघर्षों को देते हैं जहां आप उनकी अपेक्षा नहीं करेंगे)। तो हो सकता है आप विस्तार से बता सकता है तुम क्या कर रहे बिल्कुल (आदेश आप मर्ज करने के लिए उपयोग करने के बाद) की तरह?

0

ट्रंक से शाखा में परिवर्तन विलय करने के बाद मुझे 2-यूआरएल विलय का उपयोग करके शाखा को वापस ट्रंक में विलय करना सर्वोत्तम लगता है। जहां तक ​​मैं को समझता हूं - को दोहराएं, यह 2-यूआरएल विलय के लिए एक सरल वाक्यविन्यास है जो कभी-कभी fails (हालांकि मैंने पिछली बार संस्करण 1.5 में पुन: उत्पन्न किया था)।

svn merge url://[email protected] url://[email protected] . 

कहाँ mergedRev संशोधन होता है जब आप पिछले शाखा में ट्रंक विलय कर दिया।

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

अपने भंडार की संरचना मैं एक ब्लॉग प्रविष्टि (देखें नीचे के बाद से मैं सिर्फ अपने पोस्ट में एक लिंक का उपयोग करने की अनुमति दी हूँ) ariejan.net

ब्लॉग प्रविष्टि से कर सकते हैं सुझाव के लिए के रूप में: ariejan.net/2006/11/24/svn-how-to-struct-your-repository/

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