Подрывная деятельность:Сбой обновления при возникновении конфликтов?
-
09-06-2019 - |
Вопрос
Есть ли способ сообщить subversion "обновить / объединить, если это не вызовет конфликт"?
Я знаю, что ты можешь использовать --dry-run
/ status -u
чтобы проверить перед запуском обновления, но у меня часто есть другие, которые запускают обновления и получают неработающие веб-страницы, потому что они не замечают строку "C index.php".
Я также заметил, что svn, похоже, не слишком недоволен конфликтами - он по-прежнему говорит "обновлено до версии blah" и завершает работу с нулевым значением, независимо от конфликтов.Поэтому я должен проанализировать построчные выходные данные, чтобы обнаружить их.Наверняка есть способ получше?
Решение
Вы можете использовать параметр --accept, чтобы указать, что должно произойти при возникновении конфликта:
--accept ARG : specify automatic conflict resolution action
('postpone', 'base', 'mine-full', 'theirs-full',
'edit', 'launch')
Смотрите также интерактивное разрешение конфликтов страница в svnbook
Другие советы
Возможно, лучший способ - это использовать графический инструмент?Или написать скрипт для выполнения обновления, который перенаправляет выходные данные в файл и выполняет "cat svnupdate.log | grep "^ C "" в конце, чтобы показать вам какие-либо конфликты?
С графическими инструментами, которые я использую (TortoiseSVN и Netbeans), они издают неприятный шум в конце и предоставляют вам диалоговое окно выбора слияния для работы с ними.Я не знаю эквивалента с такой мощью для инструментов командной строки.
@jsight:TortoiseSVN - это здорово, но я в основном разрабатываю в среде * NIX, без X.Поэтому я обычно использую (ограниченно) командную строку.
Отвечая на ваше предложение по сценарию, это то, над чем я сейчас работаю - вот почему меня раздражает, что я не могу просто проверить $?.Прямо сейчас я пропускаю "вывод в файл" и использую канал, но в остальном именно то, что вы описали.
Вы могли бы использовать параметр --diff3-cmd, чтобы указать, какой инструмент слияния использовать (обычно diff3 из diffutils).
вы также могли бы использовать скрипт предварительной фиксации для поиска маркеров конфликта в файлах и предотвращения фиксации при их наличии.
Subversion 1.5 (недавно выпущенная) добавляет некоторую возможность указывать, что происходит во время конфликта обновлений, с аргументом "--accept".