Comment désactiver le pager git mais uniquement pour certaines commandes?

14

J'aime avoir le pager activé par git logexemple, mais pas git diffparce que j'ai mon propre outil de diff visuel qui apparaît, et je déteste devoir taper 'q' sur la ligne de commande une fois le diff terminé. Y a-t-il un moyen de faire cela?

CaptSaltyJack
la source
Même chose possible sur SO: stackoverflow.com/questions/2183900/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

23

Vous pouvez définir la pager.diffvariable de configuration pour désactiver le pager pour des sous-commandes spécifiques. Voir pager.<cmd>dans git-config (1) .

git config --global pager.diff false

Laissez-le --globalsi vous souhaitez uniquement effectuer cette modification de configuration pour le référentiel actuel.

Chris Johnsen
la source
3
Pour désactiver une invocation particulière: git -c pager.diff=false log ....
mjs
0

Pas une bonne solution, mais vous pourriez avoir un wrapper git qui détermine quelle commande vous exécutez et dirige la sortie via cat pour éliminer la détection de terminal.

#!/bin/sh
case "$1" in)
  diff) git "$@" | cat;;
  *) exec git "$@";;
esac

Bien sûr, mon programme d'exemple est entièrement braindead. Vous devrez ignorer les options au lieu de coder en dur "$ 1" dans le programme.

Seth Robertson
la source