'git show' não canaliza caracteres de controle para cor

1

Estou tentando produzir uma lista de resultados do show-git e enviá-los para um pager.
Infelizmente não consigo preservar cores.
Este é o comando que estou executando:% git log -n10 | awk '{print $1}' | xargs -d '\n' -I{} bash -c 'git show {}' -- | less -MR

Sem o canal | less -MR , a saída é impressa em cores.
Eu também tentei less -r , mas obviamente o problema parece ser que git show ou xargs não preservam a cor quando detectam que sua saída está sendo canalizada para outro comando em vez de stdout . / p>

O manual xargs não diz nada sobre a preservação da cor, nem o manual git .

Como preservo a cor na saída do less pager?

    
por Petrus K. 19.06.2017 / 16:39

1 resposta

2

man git-show descreve como forçar a preservação de cores, parece ser tirado de man git-diff :

   --color[=<when>]
       Show colored diff.  --color (i.e. without =<when>) is the same as --color=always.  <when> can be one of always, never, or auto.

Comando bash atualizado:
git log -n10 | awk '{print $1}' | xargs -d '\n' -I{} bash -c 'git show --color=always {}' -- | less -MR

    
por 19.06.2017 / 16:43