При объединении пары веток (с использованием SVN 1.6.1), когда файл был добавлен в обе ветки (а затем работал в этих отдельных ветвях), я получаю один из конфликтов нового дерева:
C foo.txt
> local obstruction, incoming add upon merge
Мне нужны изменения из обеих веток, но конфликт деревьев не дает мне обычных файлов .working, .merge-left и .merge-right, что понятно из-за характера конфликта. Таких конфликтов довольно много, и таких, где в каждой ветке произошло удаление одного и того же файла, но их легко разрешить.
Как я могу решить эту проблему? Редбин книга SVN (для 1.6) не освещает эту ситуацию.
источник
Я нашел сообщение, предлагающее решение для этого . Вот-вот запустится:
который потребует файлы локальной версии как OK.
Вы можете запустить его как для одного файла, так и для целых каталогов проектов.
источник
alias mtc='stat | awk "BEGIN { FS=\" \" } /^.{6}C/ { print \$NF }"'
Затем я могу использовать его в качестве аргумента команды разрешения, например:svn resolve --accept working $(mtc)
svn resolve --accept working path/index.html
svn resolve --accept base
источник
Мне просто удалось довольно тщательно заклинивать себя, пытаясь последовать совету user619330 выше. Ситуация была такой: (1): я добавил несколько файлов во время работы над моей начальной веткой, branch1; (2) Я создал новую ветку, ветку2 для дальнейшей разработки, отделив ее от основной ветви, а затем объединив мои изменения из ветки 1 (3) Сотрудник скопировал мои моды из ветки 1 в свою собственную ветку, добавил дополнительные моды, а потом слился обратно в багажник; (4) Теперь я хотел объединить последние изменения из основной ветки в мою текущую рабочую ветку, ветку2. Это с svn 1.6.17.
При слиянии дерево конфликтовало с новыми файлами, и мне нужна была новая версия из ствола, где они отличались, поэтому из чистой копии branch2 я удалил svn конфликтующие файлы, зафиксировал эти изменения branch2 (таким образом, создав временный версия branch2 без рассматриваемых файлов), а затем сделал мое слияние из магистрали. Я сделал это, потому что хотел, чтобы история соответствовала версии ствола, чтобы у меня не было проблем позже при попытке слияния обратно в ствол. Слияние прошло нормально, я получил версию файлов ствола, svn st показывает все в порядке, а затем я столкнулся с большим количеством конфликтов деревьев, пытаясь зафиксировать изменения, между удалением, которое я сделал ранее, и добавлением из слияния. Разрешил ли svn конфликты в пользу моей рабочей копии (у которой теперь была основная версия файлов) и заставил ее зафиксировать.
Ну нет. Обновление другой копии branch2 привело к старой версии файлов (предварительное слияние). Итак, теперь у меня есть две разные рабочие копии branch2, предположительно обновленные до одной и той же версии, с двумя разными версиями файлов, и обе настаивают на том, что они полностью обновлены! Проверка чистой копии branch2 привела к получению старой (pre-trunk) версии файлов. Я вручную обновляю их до версии ствола и фиксирую изменения, возвращаюсь к своей первой рабочей копии (из которой я первоначально отправил изменения ствола), пытаюсь обновить ее и теперь получаю ошибку контрольной суммы для рассматриваемых файлов. Удалите каталог, о котором идет речь, получите новую версию с помощью обновления, и, наконец, у меня должна быть хорошая версия branch2 с изменениями магистрали. Я надеюсь. Будьте осторожны, разработчик.
источник