2010-03-04 3 views
2

Я пытаюсь установить пейджер, используемый для 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

ответ

0

Я изменил расширение пейджера, чтобы использовать временный файл для хранения выходных команд, полученное расширение можно найти на CodePlex и Bitbucket.

0

ли вы включить pager extension в файле ~/.hgrc или mercurial.ini?

[extensions] 
    pager = 

Он поставляется с вашей ртутной установкой, но вам все равно необходимо включить его.

+0

Уже сделал это, когда он не включен, выход является ожидаемым, когда он включен, нет выхода. – alexandrul

+0

Hrm, что вы видите при запуске с '--debug'? –

+0

поведение одинаковое: нет вывода – alexandrul

Смежные вопросы