web-dev-qa-db-fra.com

Que signifient les couleurs de ligne dans git log --graph?

Je suis curieux de savoir ce que signifient les couleurs de trait dans git log --graph?

Oui, je pose des questions sur les lignes |/\ qui se connecte valide * sur le bord gauche de la sortie de la console.

part of git log --graph output

Question n ° 1
Ces couleurs ont-elles une signification cachée?
Ou sont-ils choisis de manière pseudo-aléatoire?

Question n ° 2
Parfois, les lignes superposées (mais déconnectées) ont la même couleur.
Par exemple, voyez les lignes violettes sur la capture d'écran ci-dessus:

  • première ligne de a55 à e1c
  • deuxième ligne de 3c1 à 043

Est-il possible de demander à git de choisir judicieusement les couleurs pour éviter que les lignes de couleur isolées (n'ayant pas de commit commun) se chevauchent?
Je veux que le graphique soit plus facilement lisible.

26
Egor Skriptunoff

Les couleurs sont simplement destinées à vous aider à voir les lignes comme distinctes des autres lignes. Pour répondre à la question n ° 1, ils sont attribués non pas de manière pseudo-aléatoire, mais plutôt séquentiellement, à chaque fois git log --graph sélectionne un nouveau "numéro de colonne". Malheureusement, je connais deux problèmes. Les deux sont liés à votre question n ° 2.

Voici la liste complète des couleurs par nom :

    GIT_COLOR_RED,
    GIT_COLOR_GREEN,
    GIT_COLOR_YELLOW,
    GIT_COLOR_BLUE,
    GIT_COLOR_Magenta,
    GIT_COLOR_CYAN,
    GIT_COLOR_BOLD_RED,
    GIT_COLOR_BOLD_GREEN,
    GIT_COLOR_BOLD_YELLOW,
    GIT_COLOR_BOLD_BLUE,
    GIT_COLOR_BOLD_Magenta,
    GIT_COLOR_BOLD_CYAN,

Visuellement, bon nombre de ces couleurs "se ressemblent" (ou sont assez similaires pour être indiscernables). En particulier, je trouve que les caractères "gras" ressemblent trop à ceux "normaux" sauf s'il y a pas mal de lettres imprimées en "gras", c'est-à-dire que le caractère "gras" de ma police Mac Terminal n'est tout simplement pas beaucoup plus gras que son poids standard. Cela rend de nombreuses lignes trop visuellement similaires dans le graphique pour git log --graph --decorate --oneline --all exécuté sur le référentiel Git pour Git, par exemple.

Edit : ceci est désormais réparable (ou contournable), à ​​partir de Git 2.12, en utilisant le nouveau log.graphColors entrée de configuration. Il s'agit d'une liste séparée par des virgules de noms ou de numéros de couleur (voir le git config entrée de documentation pour "couleur" dans la section Valeurs ).

Deuxièmement, le "numéro de colonne" n'est pas actuellement le numéro de colonne de la ligne. Au lieu de cela, c'est le numéro de colonne du commit. La couleur de la ligne va en haut de ce commit, au commit au-dessus. Toutes les lignes magenta de votre instantané d'image vont aux validations imprimées dans la colonne # 0: les deux a55fd8d et 3c1494a sont dans la "colonne 0". (Ils sont tous deux des validations de fusion afin de consolider les lignes entrantes.)

Est-il possible de demander à git de choisir judicieusement les couleurs pour éviter que les lignes de couleur isolées (n'ayant pas de commit commun) se chevauchent?

Vous pouvez toujours cloner le référentiel Git pour Git et écrire un nouveau code. Je noterai cependant que l'existant graph.c fait près de 1400 lignes.

11
torek

Dans ce commit 73c727d69f47572bf7f21fa31831f9a3fdad944c ("log --graph: personnaliser les lignes du graphique avec config log.graphColors", 2017-01-19), il est possible de choisir les couleurs avec le log.graphColors config .

Même avec un terminal standard, si la couleur de votre arrière-plan n'est ni noir ni blanc, la ligne du graphique peut correspondre à votre arrière-plan et devenir masquée. Vous pouvez exclure votre couleur d'arrière-plan (ou simplement les couleurs que vous détestez) avec cela.

J'utilise Git Bash et j'exclus GIT_COLOR_BLUE couleur pour la raison ci-dessus.

Je peux utiliser n'importe quel code couleur hexadécimal (au moins sur Git Bash). Le paramètre de configuration ci-dessous n'utilise que trois couleurs.

[log]
    graphColors = "#ffffff",red,green
6
hIpPy

Notez que ces couleurs seraient pas exactes en cas de fusion de poulpe, ce qui signifie une validation de fusion avec plus de 2 parents.

"git log --graph "pour une fusion de poulpe est parfois mal colorée, ce qui est démontré et documenté dans Git 2.24 (Q4 2019), mais pas encore corrigé.

Voir commit 11c21f2 , commit 25eb905 , commit 63be8c8 , commit a7a559 , commit 94ba151 (04 oct.2019) par Denton Liu (Denton-L) .
(Fusionné par Junio ​​C Hamano - gitster - in commit 5b900fb , 15 octobre 2019)

t4214 : démontrer l'échec de la coloration du graphe de poulpe

Signé par: Denton Liu

La logique de coloration des graphiques pour les fusions de poulpes a actuellement un bug. Cela peut être vu git.git avec 74c7cfa875 (Fusion de http://members.cox.net/junkio/git-jc . git, 2005-05-05), dont le deuxième enfant est 211232bae6 (Octopus fusion des cinq correctifs suivants., 2005-05-05).

Si l'on court

git log --graph 74c7cfa875

on peut voir que la fusion des poulpes est mal colorée.
En particulier, les tirets horizontaux sont décalés d'une couleur . Chaque tiret horizontal doit être de la couleur de la ligne en bas à droite. Au lieu de cela, ils sont actuellement de la couleur de la ligne vers le bas.

0
VonC