SVN Merge объединить дополнительные вещи

Я только что сделал слияние, используя что-то вроде:

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

У меня было только 2 файла, один из которых простой ChangeLog. Вместо того, чтобы просто объединить мои ChangeLogизменения, они фактически вытянули мои и некоторые предыдущие, которых не было в пункте назначения ChangeLog. Я заметил, что был конфликт, когда я выполнил --dry-run, поэтому я обновился ChangeLog, и все еще был конфликт (и я видел конфликт, когда выполнял фактическое слияние).

Затем я позже обнаружил файл, из которого я сливал:

svn diff -r 67212:67213 ChangeLog

И я вижу только те изменения, которые я сделал, поэтому я знаю, что дополнительные изменения как-то туда не попали.

Это заставляет меня беспокоиться, что слияние на самом деле не просто берет то, что я изменил, чего я и ожидал. Кто-нибудь может объяснить, что случилось?

ОБНОВЛЕНИЕ: В ответ на NilObject:

Итак, у меня изменилось 2 файла, релевантно только 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.

После слияния предыдущих изменений diff of ChangeLog выглядит так:

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.

6.08.2008 22:30:26
2 ОТВЕТА
РЕШЕНИЕ

Это происходит только с конфликтами - в основном svn пытался объединить изменения, но (грубо говоря) видел изменение как:

Добавить

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

перед

2008-08-06  Someone Else  <their_email>

И он не мог найти строку Someone Else во время слияния, поэтому добавил этот бит для контекста, вставляя конфликт. Если бы это было бесконфликтное слияние, то были бы применены только те изменения, которые вы ожидали.

2
17.08.2008 17:17:46
Я понимаю, почему это так (когда при визуальном / ручном слиянии SVN должен предоставить «существующий» базовый документ для «своей» стороны, так что это последняя редакция в ваших критериях слияния), но это действительно так. противный! (по крайней мере, для кого-то новичка в игре слияния и изумления чудом вишенков и других добродетелей слияния)
Tao 6.07.2010 17:20:54

На самом деле не достаточно информации, чтобы продолжать здесь.

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

объединит любые файлы, измененные в ревизии 67212 в папке / trunk в хранилище, и объединит их с вашим текущим рабочим каталогом. Если вы делаете:

svn log -r 67212

Какие файлы он показывает, изменились? Слияние будет извлекать изменения только из первого аргумента и применять их ко второму. Он не загружается обратно на сервер в первом аргументе.

Если это не отвечает на ваш вопрос, не могли бы вы опубликовать более подробную информацию о том, что именно происходит?

0
6.08.2008 23:12:35