Eu escrevi um script para exibir git diff
. Será
stdout
se a saída couber na tela do terminal ou Meu script:
#!/bin/sh
if ! git diff "$@" > /dev/null; then
# not in a Git repository
exit 1
fi
if [ 'git diff "$@" | wc --lines' -gt 'tput lines' ]; then
git diff "$@" --color=always | less
else
git diff "$@" --color=always | cat
fi
As limitações atuais do script:
git show
ou git log
, preciso escrever outros dois scripts semelhantes (que não é DRY). Agora eu desejo escrever um script que faça o mesmo, mas que funcione como um pager, para que eu possa definir a configuração do Git core.pager
como o script e resolver o problema mencionado.
Nota: estou usando o Zsh.
Eu tentei less --no-init --quit-if-one-screen
( less -FX
), e ele faz quase o que eu preciso, exceto que ele não limpará a tela no caso de mais de uma página. Então, na verdade eu preciso que a opção --no-init
seja condicional: desative a inicialização e saia se ela se encaixar em uma tela; nenhuma ação especial em contrário. Talvez less --no-init-if-one-screen --quit-if-one-screen
?
Tags git