msysGit: Почему журнал git выводит пустые строки?

Кажется, что чем ближе я набираю команду к нижней части окна терминала, тем меньше пустых строк вставляется. Если я наберу его в верхней части окна терминала, он вставит пустые строки почти на всю высоту окна; если я набираю его в самом низу, пустые строки не вставляются.

Похоже, что программа пейджера помещает вывод в нижнюю часть окна терминала, но я хочу, чтобы вывод был прямо под моей командой или вверху, как в Linux git.

Я могу получить ожидаемое поведение, используя git --no-pager log, но что, если я хочу использовать пейджер?


person xofz    schedule 24.05.2010    source источник
comment
Может ли это быть просто артефактом пейджера или терминала в Windows? (Пейджер определенно вызывается, верно?)   -  person Cascabel    schedule 24.05.2010
comment
Насколько я знаю, да. Вывод отличается, если я использую --no-pager. У msysGit есть файл less.exe в папке bin\, но, похоже, он действует иначе, чем Linux-версия less (если это вызывается пейджер).   -  person xofz    schedule 24.05.2010


Ответы (2)


Просто добавьте несколько элементов:

msysgit уже обсуждал альтернативные консоли в выпуске 29 год назад. назад (середина 2009 г.: mintty, но только для cygwin, захват ввода/вывода окна).

В проблеме 369 упоминается параметр "git config pager.log off" для отключения пейджинга. для «журнала», который может пригодиться для определенного сценария, подобного тому, который упоминает ОП.

Аналогичная проблема обсуждается прямо сейчас (май 2010 г.) в issue 484<. /a> (не кем иным, как пользователем SO kusma, как он указывает в комментариях;))

Я могу воспроизвести это, но я не думаю, что это проблема самого git. Это пейджер; less на msys имеет серьезные проблемы. Некоторые эксперименты с less показывают, что виновником является флаг -R:

$ git --no-pager diff --color=always HEAD~1 TestSegmentedText.java | less -R
person VonC    schedule 24.05.2010
comment
Спасибо, что процитировали меня ;) В любом случае, да. Определенно стоит проверить, не является ли виноват в этом случае less -R. Если это так, мы ожидаем скорого исправления в «devel». - person kusma; 25.05.2010
comment
@kusma: Привет, Кусма! Я не знал, что вы также были пользователем SO :) Я отредактировал ответ, чтобы добавить правильную атрибуцию. - person VonC; 25.05.2010

Это поведение пейджера. По умолчанию выходные данные Git передаются через бумагу, которая ведет себя так, как вы описываете. (Вы можете попытаться найти другой пейджер, который действует так, как вы хотите, и вместо этого использовать его в качестве своего пейджера.)

person mipadi    schedule 24.05.2010
comment
Похоже, в Linux это не так — например, я могу использовать git log --grep=... с шаблоном, который соответствует только одной фиксации, и он вызывает пейджер (я получаю (END) и должен нажать q), но не не потреблять весь терминал. Не совсем уверен, как это работает, если честно. - person Cascabel; 24.05.2010