एसवीएन विलय अतिरिक्त सामान विलय

मैंने अभी कुछ ऐसा उपयोग करके विलय किया है:

svn merge -r 67212:67213 https://my.svn.repository/trunk .

मेरे पास केवल 2 फाइलें थीं, जिनमें से एक साधारण <�कोड> चेंजलॉग है। बस मेरे ChangeLog परिवर्तनों को विलय करने की बजाय, यह वास्तव में मेरे पिछले कुछ को खींच लिया जो गंतव्य ChangeLog में नहीं थे। मैंने देखा कि जब मैंने निष्पादित किया था तो एक संघर्ष था - मैंने रन किया, इसलिए मैंने ChangeLog अपडेट किया, और अभी भी एक संघर्ष था (और जब मैंने वास्तविक विलय किया तो मैंने संघर्ष देखा)।

मैं बाद में उस फाइल पर भिन्न हुआ जिस पर मैं विलय कर रहा था:

svn diff -r 67212:67213 ChangeLog

और मैं केवल उनके द्वारा किए गए परिवर्तन देखता हूं, इसलिए मुझे पता है कि किसी भी तरह से अतिरिक्त परिवर्तन नहीं हुए थे।

यह मुझे चिंतित करता है कि विलय वास्तव में जो कुछ मैंने बदला है वह नहीं ले रहा है, जो कि मैंने अपेक्षा की थी। क्या कोई समझा सकता है कि क्या हुआ?

अद्यतन: NilObject के जवाब में:

तो, मेरे पास 2 फाइलें बदली हैं, केवल चेंजलॉग प्रासंगिक है, अन्य विलय ठीक है। जब मैं अपने नियमित ट्रंक चेकआउट पर जाता हूं, तो मैं उपरोक्त diff कमांड करता हूं और देखता हूं:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67212)
+++ ChangeLog   (revision 67213)
@@ -1,3 +1,7 @@
+2008-08-06  Mike Stone  
+
+   * changed_file: Details.
+
 2008-08-06  Someone Else  <their_email>

    * theirChanges: Details.

पिछले परिवर्तनों के विलय के बाद, चेंजलॉग का अंतर इस तरह दिखता है:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67215)
+++ ChangeLog   (working copy)
@@ -1,3 +1,14 @@
+<<<<<<< .working
+=======
+2008-08-06  Mike Stone  
+
+   * changed_file: Details.
+
+2008-08-06  Someone Else  <their_email>
+
+   * theirChanges: Details.
+
+>>>>>>> .merge-right.r67213
 2008-08-05  Someone Else2  <their2_email>

    * olderChange: Details.

ध्यान दें कि जिस प्रविष्टि को गलत तरीके से खींचा गया था वह फाइल में नहीं था, जिसे मैं विलय कर रहा हूं, लेकिन फिर भी यह मेरे परिवर्तनों में से एक नहीं था और इसे किसी भी तरह से विलय नहीं किया जाना चाहिए था। यह ठीक करना आसान था (अतिरिक्त लाइनों को हटाएं जो मेरे परिवर्तनों का हिस्सा नहीं थे), लेकिन यह अभी भी मुझे SVN में स्वचालित रूप से विलय करने की चिंता करता है।

0
ro fr bn

2 उत्तर

यहां जाने के लिए वास्तव में पर्याप्त जानकारी नहीं है।

svn merge -r 67212:67213 https://my.svn.repository/trunk .

भंडार पर फ़ोल्डर / ट्रंक में संशोधन 67212 में परिवर्तित की गई किसी भी फाइल को विलय कर देगा और उन्हें आपकी वर्तमान कार्यशील निर्देशिका में विलय कर देगा। यदि तुम करो:

svn log -r 67212

यह कौन सी फाइलें दिखाती है? विलय केवल पहले तर्क से परिवर्तन खींच देगा, और उन्हें दूसरे पर लागू करेगा। यह पहले तर्क में सर्वर पर वापस अपलोड नहीं करता है।

यदि यह आपके प्रश्न का उत्तर नहीं देता है, तो क्या आप वास्तव में क्या हो रहा है के बारे में अधिक जानकारी पोस्ट कर सकते हैं?

0
जोड़ा

यह केवल विवादों के साथ होता है - मूल रूप से svn ने परिवर्तन को मर्ज करने का प्रयास किया, लेकिन (मोटे तौर पर बोलते हुए) ने इस परिवर्तन को देखा:

जोड़ना

2008-08-06  Mike Stone  

* changed_file: Details.

से पहले

2008-08-06  Someone Else  <their_email>

और यह विलय करने के दौरान किसी और को लाइन नहीं मिला, इसलिए संघर्ष में डालते समय संदर्भ के लिए उस बिट को चकित कर दिया। यदि यह एक गैर-विरोधी विलय था तो केवल आपके द्वारा अपेक्षित परिवर्तन लागू किए गए होंगे।

0
जोड़ा
मैं समझता हूं कि ऐसा क्यों है (जब दृश्य / मैन्युअल विलय करना होता है तो एसवीएन को "उनके" पक्ष के लिए "मौजूदा" आधार दस्तावेज प्रदान करना होता है, इसलिए आपके विलय मानदंडों में नवीनतम संशोधन यह है), लेकिन यह वास्तव में है बुरा! (कम से कम किसी नए व्यक्ति के लिए मर्ज गेम के लिए और चेरीपिकिंग्स और अन्य मर्ज भलाई के आश्चर्य पर आश्चर्यचकित)
जोड़ा लेखक Tao, स्रोत