Использование kdiff3 для редактирования diff с помощью git
Часто, когда я делаю diffs, я хочу изменить свой локальный файл перед фиксацией. Это очень хорошо работает в режиме сравнения Eclipse, так как позволяет вам легко редактировать локальный файл, а также изменять копии из предыдущей версии.
Я пытаюсь настроить git и kdiff3 таким же образом. Он работает так, как ожидалось, когда я использую kdiff3 как мой mergetool. Однако, когда я устанавливаю его как diffftool, он дает мне представление только для чтения, поэтому я не могу делать никаких изменений. Согласно документации (http://kdiff3.sourceforge.net/doc/documentation.html), я бы ожидал, что опция --output
даст мне два слияния файлов, которые я хочу, но это не, Соответствующая часть моего .gitconfig:
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3 $LOCAL $REMOTE --output $LOCAL
trustExitCode = false
Ответы
Ответ 1
Я могу использовать kdiff3 для редактирования файла in-tree, если я использую следующую команду:
kdiff3 $LOCAL $REMOTE --output $MERGED
kdiff3 находится в моем $PATH
, поэтому важным битом является изменение вывода из $LOCAL
вместо $MERGED
.
Из git-difftool
manpage:
...the configured command line will be invoked with the following
variables available: $LOCAL is set to the name of the temporary file
containing the contents of the diff pre-image and $REMOTE is set to
the name of the temporary file containing the contents of the diff
post-image. $MERGED is the name of the file which is being compared.
Поскольку настройка вывода на $LOCAL
будет записываться во временный
файл, вместо этого вы захотите написать в $MERGED
, так как это будет
фактический "локальный" файл в дереве.