2013-09-09 5 views
7

У меня есть Ткань установлена ​​до git fetch на удаленной машине. Он отлично работает, но есть новая строка печатается stdout на каждый процент прогресса, GIT напечатает:Ткань печатает новую строку для каждого бит Git progress

[host] out: remote: Compressing objects: 1% (3/252) 
[host] out: remote: Compressing objects: 2% (6/252) 
[host] out: remote: Compressing objects: 3% (8/252) 
[host] out: remote: Compressing objects: 4% (11/252) 
[host] out: remote: Compressing objects: 5% (13/252) 
[host] out: remote: Compressing objects: 6% (16/252) 
[host] out: remote: Compressing objects: 7% (18/252) 
[host] out: remote: Compressing objects: 8% (21/252) 
[host] out: remote: Compressing objects: 9% (23/252) 
... 
[host] out: Resolving deltas: 0% (0/72) 
[host] out: Resolving deltas: 12% (9/72) 
[host] out: Resolving deltas: 15% (11/72) 
[host] out: Resolving deltas: 18% (13/72) 
[host] out: Resolving deltas: 22% (16/72) 
[host] out: Resolving deltas: 23% (17/72) 
[host] out: Resolving deltas: 55% (40/72) 

Как я могу предотвратить это?

ответ

8

Попробуйте это:

run('git fetch', pty=False) 
+0

Ницца, это интересный подход - спасибо , Практически это означает, что он пропускает локальный вывод всех «Распаковывающих объектов» и «Разрешать дельта» и подобных строк с удаленной машины и просто печатает итоговый вывод, который следует, например «8926e73..116683d master -> origin/master' и 'Обновление 8926e73..116683d' и' Fast-forward'. Хотя это не решает проблему, это довольно хороший средний уровень. Не могли бы вы объяснить, почему не выделять PTY дает этот результат? Я бы не подумал об этом, потому что я не понимаю, почему это работает. –

+3

Некоторые команды, такие как git или apt-get, когда у них есть PTY, считают, что они запускаются интерактивно в терминале и могут выводить информацию о текущем состоянии. Без PTY они часто возвращаются в неинтерактивный режим с более простым выходом, более подходящим для, например, передается в другую команду. – ronnix

+0

Замечательно знать, не знал этого. Спасибо. –

1

То, что я обычно делаю это, если я не хочу видеть вывод команды:

with hide('stdout'): 
    run('git fetch') 
Смежные вопросы