SVN v1.5 से, विलय रेव-दर-राजस्व किया जाता है। चेरी-उठा क्षेत्रों मर्ज करने ट्रंक शाखा विवादों को सुलझाने के लिए हमें का कारण होगा दो बार (एक जब अमेरिकन प्लान करने के लिए ट्रंक संशोधन विलय, और एक बार फिर जब वापस विलय)
तो फिर तुम कुछ गलत कर रहे हैं ! यदि आप 11-20 में किया है, तो सबसे अच्छा अभ्यास 1-20 विलय करने के लिए FB और वहाँ सब कुछ पाने के लिए है परिवर्तन चाहते
trunk fb
---------\
r1-10 |
r11-20 |
r20-30 |
आम तौर पर:
चलो देखते हैं।
फिर जब एफबी किया जाता है, तो 20-30 मर्ज करें और फिर प्रतिलिपि प्रतिलिपि करने के लिए एफबी (कोई विलय नहीं!)।
आप केवल r11 विलय करने का निर्णय लेते हैं तो प्रतिलिपि अमेरिकन प्लान ट्रंक करने के लिए 30 और: 20, ठीक है, अंत में आप r1 मर्ज करने के लिए की आवश्यकता होगी: 10 और R20।
कोई जिस तरह से आप दो बार परिवर्तन मर्ज है!
copy trunk->fb
merge 11:20 -> fb.
merge fb-1:30 -> trunk !!!!! WRONG
आप ऐसा नहीं कर सकते क्योंकि आप 11:20 दो बार विलय होगा:
मुझे लगता है कि आप शायद निम्न उपाय अपनाते हैं मान। आपको हमेशा में केवल एक दिशा में कोड मर्ज करना चाहिए।
सही तरीका:
copy trunk->fb
merge 1:20 -> fb.
merge 21:30 -> fb (now fb=trunk+feature)
copy fb -> trunk
संपादित
तो सही कदम हैं:
ट्रंक (कॉपी ट्रंक से सुविधा शाखा (अमेरिकन प्लान) बनाएं SVN के साथ शाखा सुविधा के लिए -कोपी)
FB_0=trunk_0
एफबी पर काम करें।
FB_1=FB_0 + change_a
ट्रंक से एफबी तक आने वाले सभी परिवर्तनों को मर्ज करें।
trunk_1=trunk_0 + tr_change_a;
FB_2 = FB_1 + (trunk_1 - trunk_0) == trunk_0 + change_a + tr_change_a
ट्रंक से सभी आगामी मर्ज ना किए गए परिवर्तन अमेरिकन प्लान के लिए अमेरिकन प्लान पर
FB_3 = FB_2 + change_b
मर्ज कार्य करें।
trunk_2=trunk_1 + tr_change_n;
FB_4 = FB_3 + (trunk_2 - trunk_1) == trunk_0 + change_a + change_b + tr_change_a + tr_change_b
इस बिंदु पर हम एक ऐसी सुविधा शाखा है, जो सभी नई सुविधाओं और ट्रंक में सभी परिवर्तन के होते है। तो हम सिर्फ दो शाखाओं के बीच अंतर की प्रतिलिपि बनाते हैं।
trunk_3 = trunk_2 + (FB_4 - trunk_2) = FB_4 = trunk_0 + change_a + change_b + tr_change_a + tr_change_b
अब एफबी हटा दिया गया है क्योंकि ट्रंक में हमारे सभी बदलाव हैं।
अंतिम चरण द्वारा निष्पादित किया जाता है:
svn merge /path/to/[email protected] /path/to/branches/[email protected] .
svn ci
या ट्रंक और शाखा के बीच साधारण अंतर भाषा ले में और उन्हें बराबर बनाने ट्रंक करने के लिए उन्हें डाल दिया।
यह पैटर्न http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.patterns.feature
में वर्णन किया गया अब अगर यह आपके लिए काम नहीं करता है, तो मैं सवाल समझ में नहीं आता।
EDIT2: लिए SVN-1,5
जब SVN-1 के साथ काम कर रहे।5 आप बहुत सरल मर्ज कर सकते हैं:
आप इस सुविधा का शाखा पर काम जब आप बस समय के लिए ट्रंक-समय पर परिवर्तन मर्ज:
$ svn merge /path/to/trunk
Solve conflicts
$ svn ci
यह ट्रंक में सभी परिवर्तनों के साथ अपने अमेरिकन प्लान लाइन अप होगा। एफबी के अंत में आप यह सुनिश्चित करने के लिए कि यह सब कुछ अद्यतित है, इस प्रक्रिया को चलाएं। आप ट्रंक पर जाते हैं और
$ svn merge --reintegrate /path/to/fb
$ svn ci
आखिरी में यदि आप दिखाए गए काम करते हैं तो कोई संघर्ष नहीं होना चाहिए।
जोड़ा गया एसवीएनबुक मुद्दा: http://code.google.com/p/svnbook/issues/detail?id=81 –
मेरा उत्तर अपडेट किया गया ... यदि यह मदद नहीं करता है तो मुझे प्रश्न समझ में नहीं आता है। – Artyom
एसवीएन 1.5 – Artyom