web-dev-qa-db-fra.com

Comment envelopper les commentaires de git commit?

Existe-t-il un moyen de masquer les commentaires de git commit (lorsqu'ils sont affichés via git log), afin qu'ils ne soient pas coupés à la fin de la ligne? Il semble qu'il devrait y avoir une solution assez simple, mais je n'ai pas pu en trouver une.

Merci.

67
David

Edit 2011: les autresréponses (votants) soulignent la possibilité de modifier les options less , le pager par défaut utilisé par git.
La remarque à la fin de ma réponse tient toujours: même si vous pouvez voir un message de commit long, cela ne signifie pas que d'autres outils ayant à traiter ledit message (long) pourront les traiter.


Réponse originale (janvier 2010) sur la stratégie de format de message de validation:

Selon ce blog , étant donné que git log ne fait pas d'habillage, vous devez formater votre commentaire avec une longueur de ligne appropriée.

  • git log ne fait pas de wrapping spécial des messages de commit.
    Avec le pageur par défaut less -S, cela signifie que vos paragraphes s’écoulent très loin du bord de l’écran, ce qui les rend difficiles à lire.
    Sur un terminal à 80 colonnes, si l’on soustrait 4 colonnes pour le retrait à gauche et 4 autres pour la symétrie à droite, il nous reste 72 colonnes.
  • git format-patch --stdout convertit une série de validations en une série de courriers électroniques, en utilisant les messages pour le corps du message.
    La bonne nétiquette du courrier électronique nous oblige à envelopper nos courriels en texte brut de manière à laisser place à quelques niveaux d’indicateurs de réponse imbriqués sans débordement dans un terminal à 80 colonnes.

Comme dit ici :

En général, utilisez un éditeur pour créer vos messages de validation plutôt que de les transmettre en ligne de commande. Le format devrait être:

  • Une enveloppe dure à 72 caractères
  • Un seul bref résumé du commit
  • Suivi d'une seule ligne blanche
  • Suivi de détails à l'appui

Toutes les sources (y compris livre GitPro , ce qui correspond à 50 caractères pour la première ligne, comme Jörg W Mittag commentaires) insistent sur la nécessité d'envelopper le commentaire, certainement parce que, Même si Git était capable de gérer de longues lignes, d'autres outils de la chaîne de traitement (e-mail, correctifs, ...) ne le pourraient pas.

33
VonC

Ou vous pouvez changer votre téléavertisseur pour utiliser less -R

$ git config --global core.pager 'less -R'

Cela en dit moins sur le fait d’arrêter de vouloir contrôler le format de l’écran (vous pouvez normalement faire défiler vers la droite et la gauche pendant un git log à l’aide des touches fléchées). Et comme le dit le moins manuel, "Ainsi, divers problèmes d’affichage peuvent survenir, tels que le fractionnement de longues lignes au mauvais endroit". C’est ce que vous voulez, vous voulez que la fin de ligne apparaisse à droite de votre écran (au mauvais endroit) au lieu d’être placée par l’auteur du commentaire.

À noter également que si vous appuyez sur la touche {flèche droite} _ sans modifier votre téléavertisseur, vous pourrez voir davantage de code. Quelle est ma méthode préférée.

52
Robert

Il ne semble pas y avoir de moyen parfait. Une solution de contournement que j'utilise consiste simplement à canaliser la sortie vers more (ou less, ou cat etc.):

git log | more

Cela enveloppe au moins les longues lignes sur mon système (toutefois, le formatage des couleurs manque).

19
Carl

Il a été mentionné dans la réponse précédente que le téléavertisseur par défaut (souvent «moins») est responsable du retour à la ligne et qu'il coupe généralement les longues lignes.

Pour modifier ceci sans changer vos messages de commit (less et exemple bash):

$ echo $LESS
-FRSX

C’est ce que j’avais par défaut pour écraser la variable d’environnement LESS.

echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile
17
waldo

Notez que moins -r (comme recommandé ci-dessus) conduit à moins d'oubli du nombre de lignes et que vous ratez les commits, car vos lignes les plus hautes défileront à perte de vue! Le vrai correctif est de désactiver l'option -S que git active par défaut si la variable d'environnement LESS n'est pas définie.

Une bonne solution est de changer votre configuration git de la manière suivante:

git config --global core.pager 'moins - + S'
14
MatzeBraun

Au moins dans la version 1.7.9.5 de git, git log prend en charge le retour à la ligne. Depuis le journal d'aide de git:

 PRETTY FORMATS
   %w([<w>[,<i1>[,<i2>]]]): switch line wrapping

Ainsi, par exemple, ce qui suit enveloppe les sujets longs en 72 colonnes:

alias gl='git log --format="%C(yellow)%h %an %ad%C(reset)%n%w(72,1,2)%s"'

(Convenu que les conventions de formatage de commit devraient être suivies au lieu de s’appuyer sur cela. Cependant, cela pourrait s’avérer utile jusqu’au jour où tout le monde connaît et respecte les conventions.)

12
alexei

Cela m'a aidé. 

git --no-pager log WhateverBranch | head -n40

Généralement, la branche est volumineuse. Par conséquent, le diriger vers la tête et utiliser le commutateur -n ne vous permettent de saisir que les 40 dernières lignes (ou le nombre de lignes) de sortie dont vous avez besoin. Sachez que cette approche manque également de formatage des couleurs.

4
thomas iota

Comme VonC l'a mentionné, vous voudrez peut-être envelopper vos messages de validation de 72 caractères et tuer d'un seul coup plusieurs oiseaux. Ce crochet git encapsule automatiquement vos messages de commit et fonctionne avec n’importe quel éditeur: https://github.com/surabhigupta/AutoWrapSeventyTwo

2
sur

Utiliser ce format a rendu ma vie plus heureuse: 

log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"

Étant donné que les champs dans la sortie précédant le message de validation totalisaient environ 39 caractères pour la plupart de mes validations, la lecture est beaucoup plus facile.

2
Art Smith

Voici comment j'ai résolu le problème pour emballer les messages du journal git, pour ceux qui cherchent encore des réponses:

git log --pretty=format:"@%H,%cn,%cD,%B" <file name> | tr "\n" " "|tr "@" "\n"

La sortie de la commande git log est un pipeline qui trouve la nouvelle ligne et la remplace par un espace. C'est la logique utilisée pour joindre les messages de validation en une seule ligne.

Ici, j'utilise "@" comme séparateur pour différencier les commits. Vous pouvez le remplacer par le symbole spécial de votre choix. "% H" représente le hachage de validation, "% cn" représente le nom du commetteur, "% cD" représente la date de validation et le message "% B" du corps brut. Si vous voulez en savoir plus sur pretty = format, jetez un oeil à https://git-scm.com/docs/pretty-formats

Veuillez noter que cela peut ne pas fonctionner si vous avez un caractère de nouvelle ligne dans le message de validation de git.

1
The Voyager

La suggestion personnelle est simple. Lorsque vous voulez voir les lignes complètes dans le moins de pagineur, tapez simplement -S. Cela changera en pliant les lignes ou en arrière si vous souhaitez voir une section de cette façon.

1
user4852948

Donc, je cherchais une solution à un problème similaire à celui-ci, et suis tombé sur cette question. Dans mon cas, je lance git show et j'ai deux lignes où le changement est dans un seul mot, vers la fin d'une très longue ligne. J'ai finalement résolu le problème avec une approche similaire à celle utilisée pour git diff, en utilisant l'option --Word-diff-regex. 

git show --color --Word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more

1
sibaz

RÉPONSE COURTE:
Tapez -S puis Enter lors de la visualisation du journal git.

RÉPONSE DÉTAILLÉE:
git log affiche le visualiseur de texte less, tapez donc simplement -S puis Enter pour basculer entre les deux modes de retour à la ligne "Couper les lignes longues" et "Replier les lignes longues". L'option "Longues lignes" permet le retour à la ligne automatique.

Source qui m'a aidé à apprendre ceci: https://superuser.com/a/272826/425838

1
Gabriel Staples

Si nano est votre éditeur préféré, vous pouvez configurer git pour qu’il utilise nano avec le wrapping automatique, par exemple. 72 caractères:

git config --global core.editor "nano -r 72"
0
Craig McQueen

Pour ceux qui utilisent SourceTree , il existe un paramètre (Options> Général) qui affiche un guide de colonne dans le message de validation:

 commit guide settings in SourceTree

 commit guide example

0
cyberbit