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