Подрывная деятельность:Сбой обновления при возникновении конфликтов?

StackOverflow https://stackoverflow.com/questions/33471

Вопрос

Есть ли способ сообщить 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".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top