мерзавец kdiff3 на подсистеме Ubuntu

Я использую 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) правой стороны, было отображено.

Ошибка повторяема каждый раз. Кто-либо знает то, что может вызвать эту ошибку?

1
задан 26 September 2018 в 09:58

1 ответ

Проблема состоит в том, что мерзавец использует 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"
2
ответ дан 7 December 2019 в 13:25

Другие вопросы по тегам:

Похожие вопросы: