xargs git: pula a entrada do usuário

1

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?

    
por Julian F. Weinert 15.03.2015 / 17:09

3 respostas

1

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.

    
por 16.03.2015 / 15:49
0

tente redirecionar stdin ou stdout ou ambos.

por exemplo:

gitr log < /dev/null | cat
    
por 15.03.2015 / 23:56
0

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
}
    
por 16.03.2015 / 00:03

Tags