2009-09-02 23 views
13

यहां स्थिति है: किसी विशेष शाखा पर, कुछ बदलाव में ट्रंक से विलय कर दिए गए हैं, और शाखा में भी परिवर्तन को ट्रंक में विलय कर दिया गया है।विलय में विलय विलय विलय में एक समस्या है?

सवाल मेरे पास है यह है: कुछ भी अगर, अगर मैं वापस में एक संशोधन है कि अपने आप में से सिर्फ एक मर्ज था शाखा से ट्रंक मर्ज करने के लिए कोशिश सबवर्सन में मर्ज प्रबंधन करता है क्या, शाखा में ट्रंक?

क्या इससे समस्याएं पैदा होंगी? यदि हां, तो किस तरह का? या यह करने के लिए एक पूरी तरह से अच्छी बात होनी चाहिए?

या क्या नया विलय सिर्फ उन परिवर्तनों का किसी अन्य जैसा व्यवहार करता है और बस उन्हें लागू करने का प्रयास करता है?

उत्तर

4

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

यदि आप पहले से मौजूद ट्रंक को पुनर्स्थापित करने का प्रयास करते हैं तो उन्हें सामान्य संशोधनों के रूप में माना जाएगा। यह अनिवार्य रूप से संघर्ष का कारण बन जाएगा।

4

यह आंशिक रूप से निर्भर करता है कि आप किस svn का उपयोग कर रहे हैं।

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

1.5 (और बाद में) कुछ मर्ज ट्रैकिंग देता है, लेकिन यह अभी तक पूर्ण रूप से पूर्ण नहीं है। आपके विशेष मामले में (दोनों तरीकों से विलय), मुझे नहीं लगता कि एसवीएन की ट्रैकिंग इसे संभाल सकती है। आपको शायद प्रत्येक संशोधन को मैन्युअल रूप से आगे बढ़ाना होगा।

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

2

विवर्तन के 1.5 या बाद के संस्करण का उपयोग करके, आपको विलय के लिए --reintegrate विकल्प को विलय करने के लिए निर्दिष्ट करना होगा जो कि पिछले विलय की दूसरी प्रतियां "दूसरी तरफ" है।

नोट करें कि 1) यह जानना आपके लिए है कि आपको इस विकल्प का उपयोग कब करना चाहिए 2) यह उस शाखा से आखिरी विलय होगा। इस विलय के बाद svn शाखा को मृत होने पर विचार करेगा और आगे के काम को शाखा को नष्ट करने और फिर से बनाने की आवश्यकता होगी।

यह सीधे svn docs से है, हालांकि दस्तावेज़ उपखंडों में बेहतर टूटने का उपयोग कर सकते हैं।

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