SVN merge объединил дополнительные материалы

StackOverflow https://stackoverflow.com/questions/4072

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

svn diff -r 67212:67213 ChangeLog

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

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

Обновить:В ответ на 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.

Это было полезно?

Решение

Это происходит только при конфликтах - в основном 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, в папке / trunk в репозитории и объединит их в ваш текущий рабочий каталог.Если вы это сделаете:

svn log -r 67212

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top