Установить TortoiseMerge в качестве внешнего инструмента слияния для SVN? - PullRequest
4 голосов
/ 27 февраля 2010

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Создайте сценарий 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
3 голосов
/ 02 марта 2010

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

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

Чтобы использовать инструмент слияния, вам нужно либо установите среду SVN_MERGE переменная или определить merge-tool-cmd вариант в вашем Subversion файл конфигурации (см. раздел называется «Параметры конфигурации» для подробнее). Subversion пройдет четыре аргумента инструмента слияния: БАЗОВАЯ доработка файла, ревизия файла, полученного от сервер как часть обновления, копия файла, содержащего ваш локальный правки и объединенная копия файла (который содержит маркеры конфликта). Если ваш инструмент слияния ожидает аргументы в другом порядке или формате, вы будете нужно написать скрипт-обертку для Subversion для вызова.

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

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

TortoiseMerge BaseFilePath MyFilePath TheirFilePath

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

...