2008-08-06 11 views
9

विलय कर दिया मैं तो बस की तरह कुछ का उपयोग कर किसी मर्ज किया:SVN मर्ज अतिरिक्त सामान

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

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

मैं तो बाद में फ़ाइल मैं से विलय किया गया था पर diffed किये जाने वाले:

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 <myemail> 
+ 
+ * 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 <myemail> 
+ 
+ * 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 में स्वचालित रूप से विलय करने की चिंता करता है।

उत्तर

2

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

जोड़े

2008-08-06 Mike Stone <myemail> 

* changed_file: Details. 

से पहले

2008-08-06 Someone Else <their_email> 

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

+0

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

0

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

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

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

svn log -r 67212 

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

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