Я использую kdiff3
в мерзавце колотят как git difftool
и я встретился с проблемой для использования его под подсистемой Ubuntu. Подсистема Ubuntu уже имеет установленного Мерзавца. Таким образом, я скопировал своего Мерзавца глобальная конфигурация с Bash Мерзавца (изменяющий путь соответственно):
[user]
email = ...
name = ...
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = "/mnt/c/Program Files/KDiff3/kdiff3.exe"
[diff]
tool = kdiff3
guitool = kdiff3
[difftool "kdiff3"]
path = "/mnt/c/Program Files/KDiff3/kdiff3.exe"
[core]
autocrlf = true
Затем я встретился с ошибкой:
Opening of these files failed
- [filename].[extension] (A)
Окно программы, открытое правильно, но только файл (B) правой стороны, было отображено.
Ошибка повторяема каждый раз. Кто-либо знает то, что может вызвать эту ошибку?
Проблема состоит в том, что мерзавец использует tmp файлы во время этих операций, и пути к tmp файлам могли бы быть полными путями. Вы видите то, что пути путем изменения разности cmd для повторения.
[difftool "kdiff3"]
path = "/mnt/c/Program Files/KDiff3/kdiff3.exe"
cmd = "echo $LOCAL $REMOTE"
Вывод будет чем-то как
/tmp/BPI1A2_Layout.js Layout.js
KDiff3 из окон может получить доступ к Layout.js, потому что это - относительный путь. Путь/tmp/BPI1A2_Layout.js не существует на окнах, таким образом, KDiff3 не может найти файл.
Вы могли использовать не TMPDIR по умолчанию для команд мерзавца.
TMPDIR=".tmp" git difftool
Теперь пути были бы
.tmp/BPI1A2_Layout.js Layout.js
Оба теперь относительны под той же структурой каталогов, которая окна может получить доступ и работы kdiff как ожидалось.
Если нормально использовать .tmp каталог в папке проекта затем, легкое обходное решение должно создать псевдоним
alias git="TMPDIR=.tmp git"