Você pode chamar git
com a opção --no-pager
se quiser que ele despeje tudo sem executar less
. Veja os detalhes da página do manual :
--no-pager
Do not pipe git output into a pager.
Eu tenho uma função xargs
que chama os comandos git recursivamente.
Quando eu chamo agora de gitr log
, preciso pressionar enter até o final ou q para obter a próxima chamada de xargs
a ser executada.
Posso dizer a xargs
para pular a entrada do usuário ou enviar tudo de less
de uma só vez?
Você pode chamar git
com a opção --no-pager
se quiser que ele despeje tudo sem executar less
. Veja os detalhes da página do manual :
--no-pager
Do not pipe git output into a pager.
tente redirecionar stdin ou stdout ou ambos.
por exemplo:
gitr log < /dev/null | cat
Não são os xargs que estão te alertando, são menos. E menos não é invocado por xargs, mas por git.
Cada invocação do git opera em um repositório de cada vez, então se você quiser operar em múltiplos repositórios, você precisará dizer ao git para não invocar um pager. Você pode querer invocar um pager manualmente embora.
Aqui está um código de prova de conceito não testado que faz com que o git não chame um pager, mas invoca um pager na saída de todas as invocações do git quando chamado interativamente. Seu código entra na função auxiliar run_git
.
gitr () {
if [ -t 1 ]; then
run_git \
-ccolor.branch=always "$@" -ccolor.grep=always -ccolor.showbranch=always -ccolor.status=always \
| ${GIT_PAGER:-less -r}
else
run_git "$@"
fi
}