Я пытаюсь установить пейджер, используемый для Mercurial, но выход пуст, даже если я укажу команду в разделе [pager]
или в качестве переменной окружения PAGER
.Mercurial 1.5 pager on Windows
Я заметил, что предоставленная команда запускается с cmd.exe
. Является ли это причиной пустого вывода, и если да, то какой правильный синтаксис?
Окружающая среда: Ртутный 1.5, ртутный 1.4.3
hgrc:
[extensions]
pager =
[pager]
pager = d:\tools\less\less.exe
команда Пример линии (из Process Explorer):
hg diff
c:\windows\system32\cmd.exe /c "d:\tools\less\less.exe 2> NUL:"
d:\tools\less\less.exe
ОБНОВЛЕНИЕ
В pager.py, заменив:
sys.stderr = sys.stdout = util.popen(p, "wb")
с
sys.stderr = sys.stdout = subprocess.Popen(p, stdin = subprocess.PIPE, shell=False).stdin
мне удалось получить желаемый результат для состояния ртути и дифф.
НО, я уверен, что это неправильно (или, по крайней мере, неполное), и я не контролирую приложение пейджера (less.exe): вывод отображается в окне cmd.exe, я вижу, что меньше prompt (:), но любой дополнительный вход подается в cmd.exe. Похоже, что приложение пейджера по-прежнему активно в фоновом режиме: после ввода вывода в окне cmd.exe у меня есть контроль над пейджером, , и я могу закончить его нормально.
Также не имеет значения, что я выбираю в качестве приложения для пейджера (более того, он ведет себя одинаково).
UPDATE 2
Issue1677 - [PATCH] pager for "hg help" output on windows
Уже сделал это, когда он не включен, выход является ожидаемым, когда он включен, нет выхода. – alexandrul
Hrm, что вы видите при запуске с '--debug'? –
поведение одинаковое: нет вывода – alexandrul