Решение проблемы слияния из транка в ветку в svn - PullRequest
1 голос
/ 03 сентября 2011

У меня проблема при объединении из магистрали в ветку разработки в дереве SVN.

История проекта такова. Все началось с одного ствола. О ревизии 207 была создана первая ветка. Затем в редакции 331 интересующая ветвь была отделена от ствола.

Сейчас мы находимся на пересмотре 384. Большинство изменений между 331 были сделаны в интересующей ветви, но некоторые были независимо сделаны в стволе.

Чтобы ветка осталась в гармонии с стволом, я хотел слить из ствола в него. Так что я должным образом сделал так:

svn merge ^/trunk .

Однако я считаю, что возникают всевозможные конфликты. Я могу понять несколько конфликтов, но это затрагивает почти все каталоги и файлы в дереве.

Что еще хуже, так это то, что большинство из этих предполагаемых конфликтов на самом деле являются изменениями, которые были зафиксированы в соединительной линии между 207 и 331, и, следовательно, уже включены в ветвь, поскольку были там, так как ветвь была отделена от ствола.

Что еще хуже, это то, что ряд предполагаемых конфликтов - это конфликты деревьев, в которых участвуют файлы, которые были удалены или переименованы, опять же между 207 и 331. Поскольку их больше нет в ветви, и они действительно не должны существует там, я не вижу способа решить проблему.

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

Я пробовал несколько вещей, чтобы исправить это:

svn cleanup

Мне показалось, что это не помогло.

svn checkout ^/branches/branch-of-interest new-local-copy-of-branch-of-interest

Проблема сохраняется в новой копии оформления заказа.

svn merge --record-only -r207:331 ^/trunk .

Интересно, что якобы слияние «только для записи» также попыталось изменить файлы в моей локальной копии!

svn merge ^/trunk .

Это породило целую кучу конфликтов и древовидных конфликтов, даже после того, как я боролся со слиянием только с записями, кропотливо решая изменения, которые он применял (слияние только с записями).

Я также должен сказать, что при запуске у меня работал клиент 1.6.17 и сервер 1.4.6. Однако с тех пор сервер также был обновлен до версии 1.6.17, и проблема сохраняется.

Есть ли способ, которым люди нашли решение этой проблемы? Выполнение полного слияния и разрешения файлов один за другим было бы невероятно трудоемким, и на данный момент - по очевидным причинам - я даже не уверен, что в следующий раз, когда мой SVN не будет просто пытаться тянуть то же самое на я снова и снова.

1 Ответ

0 голосов
/ 08 сентября 2011

Оказывается, проблема заключается в версии базы данных, связанной с хранилищем.Даже после того, как клиент и сервер были обновлены до последней версии, база данных оставалась в старом формате, который не отслеживал слияния.

Обновление до последней версии базы данных решило проблему и позволило мне слиться снет проблемы.В частности, мы использовали эти команды на машине, на которой размещен сервер, и репо:

svnadmin upgrade /path/to/repository
svn-populate-node-origins-index /path/to/repository
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...