Выберите git mergetool в зависимости от типа файла

При беге git mergetoolЯ хотел бы, чтобы git выбрал инструмент объединения, основанный на расширении файла. Как я могу это сделать?

Аналогичный вопрос был задан здесь: Git: настроить шаблоны для difftool и mergetool, и ответом было написать пользовательский драйвер слияния. Тем не менее, похоже, что это будет выполнено на git mergeв то время как я хотел бы, чтобы инструмент слияния был выбран на git mergetool,

Кажется, должен быть какой-то способ указать это с помощью.gitattributes, но я не могу понять, как это сделать. Любой совет?

1 ответ

Решение

Одно из решений (поскольку мой старый ответ не подходит для mergetool), чтобы установить как mergetool скрипт-обёртка.

git config --global merge.tool customMergeTool
git config --global mergetool.customMergeTool.cmd 'customMergeTool.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'

Этот скрипт-обертка customMergeTool.sh было бы:

  • проверить что $BASE есть (в частности, его расширение файла)
  • вызвать соответствующий инструмент слияния на основе этого расширения
  • вернуть статус выхода этого mergetool

Вот, например, скрипт, который elsevers: merge-wrapper,

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