2017-10-21 54 views
2

J'essaie d'utiliser les aides git de GRB (https://github.com/garybernhardt/dotfiles/blob/master/.githelpers) pour imprimer joliment mon journal git.Pipe dans ZSH décapage des couleurs à partir de la sortie du journal Git

La commande git log --graph --pretty="tformat:${LOG_FORMAT}" de la ligne 62 fonctionne très bien; impression avec des couleurs dans iTerm. Mais dès qu'il est passé à pretty_git_format, aucune couleur n'est affichée.

Ceci a fonctionné pendant plusieurs années jusqu'à il y a quelques semaines. Y a-t-il eu un changement dans zsh que je dois maintenant configurer différemment? J'utilise iTerm2 et la version zsh 5.4.2 de zsh (x86_64-apple-darwin16.7.0).

+0

Avez-vous vérifié si votre téléavertisseur quitte la sortie brute (pour préserver les couleurs)? 'git config --global core.pager 'less -R'': https://unix.stackexchange.com/a/64932/7490 – VonC

+0

Ce n'est pas ça. Même si je viens de 'git log --graph --pretty =" tformat: $ {LOG_FORMAT} "| cat' il imprime sans couleur. –

Répondre

2

Le comportement par défaut de git est de produire des couleurs si la sortie est imprimée sur un terminal (directement ou par l'intermédiaire d'un pager git-spawned). Quand votre sortie va ailleurs, comme un tuyau, git éteint les couleurs.

Vous pouvez définir l'option color.ui-always sur la ligne de commande comme ceci: git -c color.ui=always log --graph --pretty="tformat:${LOG_FORMAT}" (et oui, c'est où l'option -c va). Si vous voulez le faire fréquemment, cela peut être fait avec un alias shell dans .gitconfig.

Alors que pouvez peut également définir dans votre .gitconfig, vous ne voulez probablement pas. La plupart des programmes externes supposent que la couleur est désactivée, et vous pouvez casser d'autres parties de git, ainsi que des outils comme les intégrations d'éditeur, si vous définissez ceci dans .gitconfig.

+1

Merci. Cela marche. Mais je me demande pourquoi cela est maintenant nécessaire, alors que dans le passé ce n'était pas le cas. –

+0

@MatthewBoston - J'ai le même problème. Ajouter '-c color.ui = always' fonctionne comme vous le dites, mais semble également affecter la mise en forme de la colonne à partir de' pretty_git_format'. Trouvez-vous cela aussi? – asgeo1

1

Cela a commencé à m'arriver aujourd'hui, après la mise à jour vers OSX High Sierra et la mise à jour de mes paquets homebrew.

Je soupçonne que c'est quelque chose à voir avec la dernière version Git (2.15.0), comme ceux release notes mention changer la façon dont les git log couleurs fonctionnent:

Fixes since v2.14 
----------------- 

* "%C(color name)" in the pretty print format always produced ANSI 
    color escape codes, which was an early design mistake. They now 
    honor the configuration (e.g. "color.ui = never") and also tty-ness 
    of the output medium. 

Je pense donc que la solution de Brian est probablement le meilleur , mais je note que cela semble affecter la mise en forme de la colonne de pretty_git_format, que j'ai mentionné dans un commentaire ci-dessus.