Не удается разрешить конфликт дерева с SVN
Недавно я столкнулся с очень странным поведением подрывной деятельности.
Я только что слил свою локальную копию ветви с удаленной веткой. Все прошло гладко, но у меня 1 конфликт дерева (локальное удаление, удаленное обновление).
Хорошо, подумал я, изменил рабочую копию соответствующим образом и запустил "svn resolv --accept = working -R.".
Subversion сообщила, что она решила мои проблемы, и "svn st" больше не показывал никаких проблем. Итак, я попытался зафиксировать, но svn сказал мне, что одна из внутренних папок (внутри моей конфликтующей) устарела и предложила svn, НО это заставило папку снова конфликтовать!
Что мне делать, чтобы выбраться из этого замкнутого круга?
5 ответов
Это может или не может помочь, но иногда "очистка svn" исправит странные проблемы метаданных. Если вы проверяете чистую рабочую копию, имеет ли чистая копия ту же проблему? Если так, то предыдущий ответ звучит как шаг в правильном направлении
~/sandbox/jabira > svn resolve --accept=theirs-full testClient/
svn: warning: Tree conflicts can only be resolved to 'working' state; 'testClient' not resolved
~/sandbox/jabira > svn resolve --accept=working testClient/
Resolved conflicted state of 'testClient'
Надеюсь это поможет
Вот что помогло мне отказаться от всех локальных изменений и перейти к файлам из репозитория сервера:
svn update --accept theirs-full
svn resolve --accept theirs-full <pathname>
Появляется это сообщение: W155027: конфликт дерева может быть разрешен только как "работающий"
Следующий шаг не интуитивно понятен, но на самом деле это сокращает улов-22:
svn resolve --accept=working <pathname>
ТЕПЕРЬ верните все "рабочие" изменения рекурсивно. Это отменило все мои локальные изменения.
svn revert -R .
Вернуться к нормальному, без ошибок:
svn update
Вы можете использовать другой способ, кроме команды svn resol:
- Создайте патч конфликтующего файла. (или резервное копирование вашей версии конфликтующей папки с помощью экспорта SVN...)
- Обновите свой репозиторий (svn update)
- Примените ранее сделанный патч (или замените конфликтующий файл / папку резервной копией)
- Зафиксируйте изменения (svn commit)
Вероятно, у вас не было обновленных папок, когда вы выполняли слияние, или где-то до слияния возник конфликт. Чтобы исправить это, вам придется вернуть свой ствол (целевую папку) к предыдущей версии. Затем запустите очистку этой папки. Затем запустите очистку в папке филиала (исходная папка). Затем обновите обе папки снова. Если вы получаете строки красного цвета в любом рабочем процессе, то вам нужно сначала вернуть эти файлы, а затем перевести их в состояние, в котором они вам нужны. Затем обновите папки (да, еще раз). Наконец, выполните объединение снова.