SVN-слияние не объединяет ничего для некоторых изменений

Мы используем Subversion и TortoiseSVN. Мы используем магистраль для разработки и веток для представления стабильных выпусков. Изменения (исправления ошибок), которые выполняются на ветке, впоследствии объединяются обратно в магистраль. Мы не являемся экспертами в подрывной деятельности, но в целом это хорошо работает для нас.

Недавно я объединил кучу изменений от ветки к туловищу, и я попал в одну ревизию, где слияние ничего не делает.

Command    Merging revisions 7233-7234 of .../branches/RB-7.2.0 into C:\Core, respecting ancestry
           C:\Core  
Finished!   

Изменения в ветке явно связаны с изменениями, связанные с ними файлы не новы, и изменения не отображаются в моей рабочей копии туловища, поэтому я не знаю, почему он не работает. Похоже, что существует несколько последовательных изменений ветвей, которые ведут себя таким образом (с участием нескольких разных файлов), а затем после того, как они ведут себя нормально.

Я знаю, что можно заблокировать ревизии от объединения, отметив слияние как только запись (ревизия отмечена как объединенная, даже если это не так). Поэтому единственное, что я могу придумать, это то, что эти изменения имеют как-то заблокирован. В соединительной линии файлы, которые должны быть объединены, не имеют ничего в свойстве mergeinfo и ни одна из их родительских папок. Но я не уверен, буду ли я там видеть эту информацию. Кроме того, диалог "показать журнал" в диалоговом окне слияния отображает все изменения, в том числе те, которые я уже успешно объединил, независимо от того, выбран ли "включить объединенные ревизии".

Итак, мои вопросы таковы:

  • Есть ли способ подтвердить эту теорию блокировок?
  • Если изменения заблокированы, есть ли способ разблокировать их?
  • Если они не заблокированы, на что еще я должен смотреть?

Обновление: подтвердив, что проблема не связана с блокировкой ревизий, я попробовал слияние снова из командной строки вместо черепахи. Это слияние (yay!), Но теперь, когда я смотрю на него, я замечаю, что mergeinfo не обновляется ни для одного из измененных файлов, только для 6 несвязанных файлов, у которых уже есть mergeinfo. Я не уверен, беспокоиться об этом. Я до сих пор не знаю, почему черепаха не работает, но, по крайней мере, я могу выполнить свою работу.

Ответы

Ответ 1

Когда Tortoise выполняет слияние, он будет использовать свойство mergeinfo, чтобы определить, какие ревизии следует объединить, если оставить поле редактирования пустым. Итак, вы "разблокируете" ревизию, просто слейте ее явно. Черепаха не перечисляет уже объединенные версии в журнале

Tortoise может снова записать слияние в mergeinfo, поэтому после этого посмотрите на свойства svn каталога, чтобы узнать, делает ли это это (и отредактируйте дополнительный вход), хотя я думаю, что сервер сделает это, его проще сделать иногда вручную).

Альтернативный способ - посмотреть на прозеркатию mergeinfo и посмотреть, не указана ли эта ревизия, если да, удалите ее и зафиксируйте. Затем повторите слияние, и оно должно работать так, как вы ожидаете.

У адресата обычно есть mergeinfo, но я предполагаю, что в вашем ase ветвь также имеет некоторые, которые могут блокировать слияние. Сообщите нам, если это так, мне было бы интересно посмотреть, что на самом деле происходит для вас.

Ответ 2

Возможно, было записано слияние. Чтобы дважды проверить, From C:\Core (выглядит как ваш багажник):

svn propget -R svn:mergeinfo > mergeinfo.txt 

Найдите в результирующем файле, чтобы увидеть, есть ли перечисленная ревизия #. Помните - это TRUNK, который вы хотите проверить, поскольку это цель слияния.

Он может быть указан как диапазон, поэтому прямой поиск # может не работать (файл .eg может содержать 7230-7240, а не 7234). Если нет, происходит что-то еще - если это так, возможно, слияние было записано на файл или папку, которые не были проверены.

Я не уверен, как отменить запись mergeinfo без ручного редактирования (НЕ РЕКОМЕНДУЕТСЯ), но вы можете заставить его повторно объединить ревизию, передав --ignore-ancestry. Если это заставляет слияние что-то делать, тогда svn считает, что слияние уже произошло, и вы должны были увидеть доказательства выше.

Если слияние еще не записано, и вышеуказанные шаги не решили его, проверьте svn списки рассылки для идей.