Подтвердить что ты не робот

Использование 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
4b9b3361

Ответ 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, так как это будет фактический "локальный" файл в дереве.