Я слежу за этим сообщением о том, как использовать Winmerge в качестве сравнения. инструмент в git. Сначала это не работает (хорошо, поэтому не имеет отношения к моему вопросу здесь). Одно из ключевых отличий заключается в том, что я использую git, предоставленный внутри MSYS2, а не msysgit в собственной среде Windows. Соответствующий фрагмент конфигурации git:
[diff]
guitool = winmerge
[difftool "winmerge"]
cmd = \"????/WinMergeU.exe\" /e /s /u /r /wl \"$LOCAL\" \"$REMOTE\"
К моему шоку, некоторые параметры командной строки winmerge были преобразованы в буквы дисков при выполнении, что привело к сбою. Настоящая команда, выполняемая после git difftool -g:
"????\WinMergeU.exe" /e S:/ U:/ R:/ D:/msys64/wl <file1> <file2>
Где D:/msys64 - мой префикс установки MSYS2. Обратите внимание на несоответствие ошибок /e неконвертировано, /wl преобразовано в компонент пути, а всех остальных - в буквы дисков. Решение будет найдено позже, если использовать - вместо / в качестве префикса всех опций:
[difftool "winmerge"]
cmd = \"????/WinMergeU.exe\" -e -s -u -r -wl \"$LOCAL\" \"$REMOTE\"
Мой вопрос:
- Почему непоследовательное поведение? Есть ли ссылка на то, как
cygpathвыполняет преобразование пути? - К счастью, WinMerge допускает использование
-в качестве индикатора опции. Есть ли обходной путь для тех инструментов с графическим интерфейсом, где допускается только/?