Почему некоторые оболочки git скрыты внутри оболочки cygwin? - PullRequest
5 голосов
/ 10 февраля 2012

Один из моих коллег недавно заметил несоответствие между обычной командой git log и следующим псевдонимом:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

После небольшого нажатия мы обнаружили, что это может быть связано сcygwin bash.

Вот наши выводы:

  • git log --graph

    все коммиты видимы

  • git log --oneline

    некоторые коммиты отсутствуют ... хорошо!Давайте подготовим отчет об ошибке, перенаправив вывод в текстовый файл:

  • git log --oneline > test.txt

    Увы, все коммиты видны в test.txt?!?Давайте исследуем дальше, разобрав псевдоним.Удаление цветовых кодов:

  • git log --graph --pretty=format:'%h - %d %s (%cr) <%an>'

    некоторые коммиты отсутствуют.Так что это должна быть одна из переменных ...

[... некоторые обморожения позже ...]

  • git log --graph --pretty=format:'%h - %d %s (%cr)'

    все коммиты видимы

  • git log --graph --pretty=format:'%h - %d %s <%an>'

    все коммиты видимы

Кажется, что после определенного перерыва комбинаций переменных.В этом случае (%cr) <%an>

Я также попробовал тот же репозиторий на Linux и там, он работает как положено (т.е. все коммиты показаны в журнале).

Мы хотели бы знатьпочему это происходит.

1 Ответ

1 голос
/ 05 апреля 2012

Попробуйте, чтобы приблизиться к причине:

  • используйте cygwin с другим терминалом, скажем, xterm или mintty.
  • set (or unset?) $PAGER и посмотритекак это влияет на ошибку.
  • , если $PAGER равно less, сохраните журнал изнутри less ( S ) и / или -R чтобы включить / выключить обработку выходов ANSI, если у вас есть цвет.
  • попробуйте с --no-color, если у вас есть цвет на
  • , проверьте настройки локали, $LC_ALL,$LANG и т. Д. Попробуйте

LANG=C git log и т. Д.

...