Суть проблемы в следующем: если Git генерирует вывода больше чем на одну страницу, есть некоторая вероятность, что Git повиснет. Сам Far не виснет, поэтому приходится прибивать дочерние процессы Git с помощью менеджера процессов. "Повиснет" означает, что выйти из многостраничной выдачи не предоставляется возможным, равно как и завершить сам Git с помощью Ctrl-C/Break. Постраничный вывод Git с помощью пейджеров отключён (т.е. команды типа git status, git add, git commit просто пишут в вывод без ожидания пользователя продолжить или прервать выдачу). Причём, судя по всему, такое поведение наблюдается только тогда, когда Git выдал весь результат, но по каким-то причинам виснет в самом конце. И, если прибить дочерний процесс Git, вероятность зависания при повторном запуске Git из-под того же экземпляра Far будет стремиться к единице.
Диаграмма процессов, примерно такова:
far.exe
\-- git.exe (родительский процесс, не виснет)
\-- git.exe (дочерний процесс, его нужно снять, чтобы родительский процесс "отпустило")
Думал, что эта проблема решается просто установкой по крайней мере версии Far из 2018, но ошибался. Проблема проявляется только при использовании связки [м.б. ConEmu+]Far+Git, но не Cmd+Git, или Cygwin Bash+Git.
Конфигурация:
- Windows 7 Ultimate 64
- Far Manager 3.0 build 5200
x86 (воспроизводилось и в более старых версиях)
- git version 2.13.3.windows.1 (возспроизводилось и в более старых версиях)
Где притаилась ошибка? Спасибо.
EDIT 1: Запуск `far -p -m` не устраняет проблему.