Но это скоро изменится с Git 2.12 (1 квартал 2017 года).
Это означает, что difftool
должен нормально работать под Emacs, больше не заботясь о Perl.
difftool
: реализовать функциональность во встроенном
Мотивация для преобразования difftool
заключается в том, что сценарии Perl совсем не являются родными для Windows, и поэтому git difftool
довольно медленно запускается.
ту платформу, когда нет веских причин, чтобы она была медленной.
Кроме того, Perl на самом деле не имеет доступа к внутренностям Git.
Это означает, что любой скрипт всегда должен будет перепрыгивать ненужные
обручи, и ему часто придется выполнять ненужную работу (например, когда
чтение всей конфигурации каждый раз, когда git config
вызывается для запроса
одно значение конфигурации).
Текущая версия встроенного difftool, однако, не делает полную
использование внутренних органов, но вместо этого выбирает порождать пару Git
процессы, тем не менее, чтобы сделать для более легкого преобразования. Там остается много
комнаты для улучшения, оставленные позже.
Примечание: чтобы не рисковать, оригинальный difftool
по-прежнему вызывается, если
настройка конфигурации difftool.useBuiltin
установлена на true
.
Причина: новый, экспериментальный, встроенный difftool
был поставлен как часть
Git для Windows v2.11.0, чтобы облегчить крупномасштабное тестирование, но
конечно, как дополнительная функция.
Ускорение на самом деле более заметно в Linux, чем в Windows: быстрое
тест показывает, что t7800-difftool.sh
работает /
- in (2,183 с / 0,052 с / 0,108 с) (реальный / пользователь / sys) в виртуальной машине Linux, по сравнению с (6,529 с / 3,112 с / 0,644 с), тогда как
- в Windows это (36,064 с / 2,730 с / 7,194 с), вместо (47,637 с / 2,407 с / 6,863 с).
Виновником, скорее всего, являются накладные расходы, понесенные из-за все еще необходимости
выложить на mergetool-lib.sh
и difftool--helper.sh
.
Тем не менее, это улучшение.