Git mergetool в Windows постоянно получает путь к файлу из установки Git, а не корень хранилища

Я хочу использовать SemanticMerge в качестве инструмента слияния в Git, но когда я пытаюсь выполнить слияние, я получаю жалобу от SemanticMerge о том, что он не может найти файл C:\Program Files (x86)\Git\my_repo_name\my_project\MyFile.cs.BASE.1234.cs - что абсолютно правильно, как и должно быть при C:\repositories\my_repo_name\my_project\MyFile.cs и так далее. По какой-то причине, хотя Git работает с репозиториями во всех других отношениях, похоже, что он решил передать пути к файлам $BASE, $LOCAL и $REMOTE с предустановленным путем установки Git вместо корня репозитория.

Я использовал конфигурацию, предложенную в их собственном руководстве, в качестве отправной точки для этого, и инструмент, кажется, работает нормально, если заданы правильные пути, поэтому я предполагаю, что где-то между Git и MsysGit, есть некоторая неправильная конфигурация или недопонимание.

1 ответ

Решение

Я не уверен, является ли конфигурация SemanticMerge вашей проблемой, но если это так, вы можете попробовать использовать эти настройки. Он работает на моей рабочей машине, но это настройки моего персонального компьютера, поэтому они еще не были обновлены. Эти настройки для msysgit на Windows 7, кстати:

[mergetool "sm"]
    keepBackup = false
    trustExitCode = false
    cmd = 'C:/Users/<user>/AppData/Local/PlasticSCM4/semanticmerge/semanticmergetool.exe' -b=\"$BASE\" -d=\"$LOCAL\" -s=\"$REMOTE\" -r=\"$MERGED\" -l=csharp -emt=\"mergetool.exe -b=\"\"@basefile\"\" -bn=\"\"@basesymbolic\"\" -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -r=\"\"@output\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\" -edt=\"mergetool.exe  -s=\"\"@sourcefile\"\" -sn=\"\"@sourcesymbolic\"\" -d=\"\"@destinationfile\"\" -dn=\"\"@destinationsymbolic\"\" -t=\"\"@filetype\"\" -i=\"\"@comparationmethod\"\" -e=\"\"@fileencoding\"\"\"
Другие вопросы по тегам