Il n'utilise pas ncurses (programmes qui utilisent ncurses prend généralement plus l'écran entier).
Courir
strace -p -o git-gc.strace git gc
montre que les messages de progression sont écrits à stderr (descripteur de fichier 2) - mais ils sont désactivés si stderr est pas un téléscripteur. Donc, si vous exécutez
git gc 2>some_file
alors some_file
sera vide, parce que git gc
ne produit pas les messages de progrès.
En regardant le code source (builtin/gc.c
), il y a une option quiet
qui est définie par l'option de ligne de commande --quiet
:
git gc --quiet
Je n'ai pas trouvé le code qui se quiet
sur si stderr est pas un téléscripteur, mais je vois un code similaire ailleurs dans les sources git, telles que:
quiet = !isatty(2);
Il n'y a aucune option de ligne de commande pour mettre le quiet
option off.
Cela signifie que si vous voulez capturer la sortie de progression de git gc
, vous devrez le convaincre qu'il s'exécute avec stderr dirigé vers un tty.
some guy's answer fournit un moyen de le faire. Cependant, étant donné que le code s'efforce de produire les messages de progression uniquement s'il écrit dans un terminal, vous pouvez décider si vous avez vraiment besoin de capturer ces messages. Ils ne sont pas conçus pour être sauvés, et ils pourraient ne pas être très utiles.
Si vous voulez examiner les sources git-vous (et, si vous êtes suffisamment motivé, les pirater pour forcer les messages de progrès à écrire):
git clone git://git.kernel.org/pub/scm/git/git.git