में परिवर्तन पूर्ववत किए उदाहरण के प्रयास में जब सबवर्सन में कार्यक्षमता में, मैं उपयोग के मामले परिवर्तन पूर्ववत किए शाखाओं में बंटी की बुनियादी विलय खंड के उपधारा और svnbook के विलय अध्याय में वर्णित परीक्षण करने के लिए प्रयास किया। मैं संस्करण 1.6.4 का उपयोग कर रहा हूं, लेकिन उस खंड के लिए पाठ पुस्तक के दोनों संस्करणों में समान है।संघर्ष सबवर्सन
मेरी कार्यशील प्रति निर्देशिका में, मैं एक फ़ाइल testcode.py संपादित करता हूं, प्रति संपादन एक पंक्ति जोड़ता हूं, और प्रत्येक संपादन के बाद करता हूं। कई प्रतिबद्ध करने के बाद, इस प्रकार फ़ाइल में लिखा है:
this is my first import to trunk. r1.
this is my first commit, first edit of testcode.py. r2.
this is another edit of testcode.py. r3.
this is an edit of testcode.py. i'll get rid of this one. r4.
this is another edit of testcode.py. keeping it. r5.
yet another edit. keeping it. r6.
भंडार मैच में संशोधन संख्या फ़ाइल में लाइनों को इस तरह के /trunk/[email protected] में, फ़ाइल की अंतिम पंक्ति है कि आरएन के साथ समाप्त एक। मैं जो करना चाहता हूं वह आर 4 में समाप्त होने वाली रेखा को हटा देता है, अपरिवर्तित से पहले और बाद में सबकुछ रखता है।
svnbook के परिवर्तन पूर्ववत किए खंड में उदाहरण के बाद, मैं आदेश
svn merge -c -4 file:///path_to_repos/trunk
यह एक संघर्ष, (जो आदेश चलाकर, पर नहीं करने पर) बनाता है चलाने जिससे मर्ज-बाएँ फ़ाइल सब कुछ होता है लाइन आर 4 तक, और मर्ज-दाएं फ़ाइल में लाइन आर 3 तक सब कुछ शामिल है। दूसरे शब्दों में, पिछले परिवर्तन को हटाने के बजाय, कमांड पूरी फ़ाइल को या तो संशोधन 3 या 4 पर वापस लेना चाहती है, बाद में संशोधन (5 और 6, इस मामले में) में परिवर्तनों को हटा रही है।
जिस तरह से मैंने svnbook में उदाहरण पढ़ा है, जिसने उपयोगकर्ता को 303 में किए गए बदलाव को उलट दिया है और परिणाम को बिना किसी विरोध के 350 के संशोधन के लिए परिणाम दे रहा है, मेरे द्वारा चलाए गए आदेश को एक एसवीएन स्थिति के साथ एक फाइल बनाई जानी चाहिए एम जो आर 4 में समाप्त होने के अलावा सभी लाइनों को बरकरार रखता है।
क्या मैं पुस्तक के उदाहरण को गलत तरीके से पढ़ रहा हूं, क्या उदाहरण गलत है, या क्या उपयोगकर्ता त्रुटि का कोई अन्य रूप है, मैं अनजान में गिर गया?
निश्चित रूप से पुनरुत्पादित। अब सोचने की जरूरत है कि ऐसा क्यों होता है। –
'svn diff -c -4 foo.txt> foo.patch' के साथ एक पैच बनाना और फिर इसे' foo.txt @ HEAD' के रूप में लागू करने के लिए लागू करना - r4 लाइन को हटा देता है। –
तो पैच काम करते हैं, लेकिन "एसवीएन मर्ज ** के लिए एक बेहद आम उपयोग केस", जैसा कि एसवीएन बुक इसे रखता है, एक सीधा व्यक्ति जो अपना स्वयं का उपधारा प्राप्त करता है, बस सादा नहीं करता है। इससे शाखाओं को फिर से भरने जैसी अधिक जटिल प्रक्रियाओं में सबवर्जन के विलय समारोह के व्यवहार में विश्वास को प्रेरित नहीं किया जाता है। – krosbonz