Установить TortoiseMerge в качестве внешнего инструмента слияния для SVN?

Можно ли настроить TortoiseMerge (поставляется с TortoiseSVN) в качестве внешнего инструмента слияния, который появляется при возникновении конфликта слияния с использованием командной строки "svn merge"? Я попытался установить переменную окружения "SVN_MERGE", чтобы он указывал на TortoiseMerge.exe, но этого недостаточно. TortoiseMerge просто появляется, когда я выбираю "l" (для запуска внешнего инструмента) и спрашивает, какие файлы я хочу объединить. Я хочу, чтобы эта информация автоматически вставлялась в инструмент.

Есть идеи?

2 ответа

Решение

Я не знаю, какую версию Subversion вы используете, поэтому я попытаюсь обратиться к информации в самой последней версии документации Subversion для 1.6. (Они добавляют на этой странице, что "если вы добавляете в закладки или ссылаетесь на определенные разделы, эти ссылки могут быть признаны недействительными в результате продолжения разработки". Но стабильной версии для 1.6 нет.)

Во-первых, плохие новости:

Чтобы использовать инструмент слияния, вам нужно либо установить переменную среды SVN_MERGE, либо определить опцию merge-tool-cmd в вашем файле конфигурации Subversion (подробнее см. Раздел "Параметры конфигурации"). Subversion передаст инструменту слияния четыре аргумента: ревизия BASE файла, ревизия файла, полученного от сервера в рамках обновления, копия файла, содержащего ваши локальные правки, и слитая копия файла (который содержит маркеры конфликта). Если ваш инструмент слияния ожидает аргументы в другом порядке или формате, вам нужно написать скрипт-обертку для вызова Subversion.

Немного лучшая новость в том, что Subversion несколько предвосхитила ваш вопрос. См. Раздел " Использование внешних разностных инструментов и инструментов слияния"; Существуют шаблоны внешних оболочек инструментов слияния.

В вашем конкретном случае документация TortoiseMerge содержит приложение, объясняющее, как использовать его из командной строки. Основные переключатели /base, /mine, а также /theirs, но вы можете захотеть использовать больше (в конце концов, вы пишете свой собственный скрипт-обертку). TortoiseMerge также допускает "упрощенную форму" команды:

TortoiseMerge BaseFilePath MyFilePath TheirFilePath

Способ сообщить результаты вашего слияния обратно в Subversion - записать объединенный файл в стандартный вывод и вернуть соответствующее значение. Эта информация размещена на видном месте в шаблонах оболочки в руководстве Subversion.

Создайте скрипт bat, который выглядит так:

"c:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%1" /theirs:"%2" /mine:"%3" /merged:"%4"

Затем установите переменную среды SVN_MERGE для этого сценария bat:

set SVN_MERGE=c:\bin\svnmerge.bat
Другие вопросы по тегам