Как принять 'их-конфликт' для разрешения конфликта деревьев: локальное добавление, входящее добавление при слиянии

Я столкнулся со следующим основным конфликтом Дерева: Локальное добавление, входящее добавление при слиянии.

Я знаю, что мы можем использовать svn resolve --accept working file, чтобы решить эту проблему, но SVN не позволяет мне использовать accept their-conflict для принятия входящей версии.

Может кто подскажет, как заменить мой локальный файл на входящий? Возможно ли каким-либо образом использовать svn resolved file?


person Elie Xu    schedule 10.02.2012    source источник
comment
Один из вариантов - переместить локальный файл в сторону, выполнить svn update, вернуть файл и затем выполнить svn commit. Конечно, это, вероятно, неправильный способ сделать это, но, вероятно, это намного проще, чем играть с командами SVN.   -  person aroth    schedule 10.02.2012
comment
@aroth, эти файлы уже существуют как в стволе, так и в ветке (фон: я объединяю ветку в ствол еженедельно), на самом деле, я хочу использовать тот, который находится в ветке, чтобы перезаписать тот, который находится в стволе, как вы сказали, мне нужно удалите эти файлы в багажнике, затем зафиксируйте, а затем объедините их из ветки, верно?   -  person Elie Xu    schedule 10.02.2012
comment
@ malenkiy_scot, Нет, по каким-то историческим причинам я не проверял, верны ли шаги, которые я указал, или нет. Конфликты деревьев вызваны повторением слияния, поэтому я удалил свойство svn: mergeinfo подкаталога, позволив ему унаследовать его родительский (правильный), он работает в моей ситуации.   -  person Elie Xu    schedule 09.05.2012


Ответы (3)


Правильнее всего будет обнаружить эту проблему в предыдущем --dry-run и удалить локальный конфликтующий каталог с помощью svn delete перед выполнением слияния.

Первый сценарий: рабочая копия с уже выполненным слиянием. Решение: удалите рабочую копию, извлеките чистую копию и сделайте правильные действия.

Второй сценарий: уже зафиксирован неправильный каталог после svn resolve --accept=working.

Вы должны svn delete конфликтующий каталог и повторно запустить слияние из родительского каталога конфликтующего каталога, игнорируя mergeinfo. Вернуть все объекты, кроме предыдущего конфликтующего каталога (теперь конфликта нет). Проверьте и подтвердите изменения.

Бывший. Рабочая копия в папке WC. Ваш конфликт в каталоге A / конфликтDir:

cd A
svn delete conflictDir
svn merge --ignore-ancestry -rbeginRev:endRev <URLrepo/A>
svn -R revert `ls | grep -v conflictDir`
<... check ...>
svn ci -m "conflictDir fixed"
person Diego Fernández Durán    schedule 13.06.2012

У меня была аналогичная проблема, когда я svn обновлял файл, который конфликтует с моим локальным файлом. Я хочу, чтобы удаленная копия заменила мою локальную копию. Я сделал svn delete file_name, а затем svn revert file_name. Восстанавливается на удаленную копию. Я не уверен, нужно ли первое удаление svn или нет.

person Pengyao    schedule 21.12.2015
comment
Для меня удаление файла с помощью rm привело к тому, что конфликт остался, но удаление его с помощью svn delete и последующее восстановление устранило конфликт дерева. - person tomjen; 12.09.2016
comment
Эти конфликты также возникают при входящем удалении. Затем svn revert DIR удалит каталог, и конфликт исчезнет. - person John; 11.06.2019

Tree conflict on 'wp-content/plugins/cm-alpha/condensed-back.js'
> local file replace, incoming file edit upon update
Select: (mc) keep affected local moves,
    (r) mark resolved (breaks moves), (p) postpone,
    (q) quit resolution, (h) help: 

После того, как я ответил r

Resolved conflicted state of 'wp-content/plugins/cm-alpha/condensed-back.js'
Summary of conflicts:
Tree conflicts: 0 remaining (and 1 already resolved)

... и это продолжилось с обновлением

Updating 'wp-content/plugins':
A    wp-content/plugins/cm-jobs/both-ends/php/ajax-prc
U    wp-content/plugins/cm-eats/condensed-front.css
U    wp-content/plugins/cm-eats/condensed-front.min.css
U    wp-content/plugins/cm-estore/condensed-front.css
Updated to revision 304.
At revision 304.

По завершении я сделал предварительный просмотр рассматриваемого файла с помощью

ls wp-content/plugins/cm-alpha/condensed-back.js -l
-rwxrwxrwx 1 www-data www-data 793528 Oct 19 21:13 condensed-back.js

Затем я выполнил эти 2 команды:

sudo svn delete condensed-back.js --force
sudo svn revert condensed-back.js

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

ls wp-content/plugins/cm-alpha/condensed-back.js -l
-rwxr-xr-x 1 root root 794427 Oct 25 22:08 condensed-back.js

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

person Jay Lepore    schedule 26.10.2020