سؤال

لقد قمت للتو بالدمج باستخدام شيء مثل:

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

لم يكن لدي سوى ملفين، أحدهما بسيط ChangeLog.بدلا من مجرد دمج بلدي ChangeLog التغييرات، في الواقع سحبت الألغام بالإضافة إلى بعض التغييرات السابقة التي لم تكن في الوجهة ChangeLog.لقد لاحظت وجود تعارض عندما قمت بتنفيذ --dry-run، لذا قمت بالتحديث ChangeLog, ، ولا يزال هناك تعارض (ولقد رأيت التعارض عندما قمت بالدمج الفعلي).

ثم اختلفت لاحقًا حول الملف الذي كنت أقوم بالدمج منه:

svn diff -r 67212:67213 ChangeLog

وأرى فقط التغييرات التي أجريتها، لذلك أعرف أن التغييرات الإضافية لم تصل إلى هناك بطريقة أو بأخرى.

هذا يجعلني أشعر بالقلق من أن الدمج لا يعني في الواقع مجرد أخذ ما قمت بتغييره، وهو ما كنت أتوقعه.هل يمكن لأحد أن يشرح ما حدث؟

تحديث:ردًا على NilObject:

لذلك، قمت بتغيير ملفين، فقط ChangeLog هو ذو الصلة، أما الملف الآخر فقد تم دمجه بشكل جيد.عندما أذهب إلى صندوق الأمتعة العادي الخاص بي، أقوم بتنفيذ الأمر 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.

هل كانت مفيدة؟

المحلول

يحدث هذا فقط في حالة التعارضات - حيث حاول svn دمج التغيير في الأساس، ولكن (تقريبًا) رأى التغيير على النحو التالي:

يضيف

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

قبل

2008-08-06  Someone Else  <their_email>

ولم يتمكن من العثور على سطر "شخص آخر" أثناء إجراء الدمج، لذا تم وضع هذا الجزء في السياق عند وضع التعارض.إذا كان الدمج غير متعارض، فسيتم تطبيق التغييرات التي توقعتها فقط.

نصائح أخرى

لا توجد معلومات كافية حقًا للمضي قدمًا هنا.

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

سيتم دمج أي ملفات تم تغييرها في المراجعة 67212 في المجلد / صندوق الأمتعة الموجود في المستودع ودمجها في دليل العمل الحالي الخاص بك.اذا فعلت:

svn log -r 67212

ما هي الملفات التي تظهر أنها تغيرت؟لن يؤدي الدمج إلا إلى سحب التغييرات من الوسيطة الأولى وتطبيقها على الوسيطة الثانية.لا يتم تحميله مرة أخرى إلى الخادم في الوسيطة الأولى.

إذا لم يكن هذا يجيب على سؤالك، هل يمكنك نشر المزيد من التفاصيل حول ما يحدث بالضبط؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top