¿Qué significan los colors de línea en el log logógrafo git?

Tengo curiosidad por saber qué significan los colors de las líneas en git log --graph ?

Sí, estoy preguntando sobre líneas | / \ which connect commits * en el borde izquierdo de la salida de la console.

parte de la salida del registro de git

Pregunta 1
¿Estos colors tienen algún significado oculto?
¿O son elegidos pseudoaleatoriamente?

Pregunta 2
A veces las líneas superpuestas (pero desconectadas) tienen el mismo color.
Por ejemplo, vea las líneas violetas en la captura de pantalla de arriba:

  • primera línea de a55 a e1c
  • segunda línea de 3c1 a 043

¿Es posible pedirle a Git que elija los colors sabiamente para evitar que las mismas líneas de color se solapen (sin tener en común)?
Quiero que el gráfico sea más fácil de leer.

Los colors están simplemente destinados a ayudarte a ver las líneas como distintas de otras líneas. Para responder a la pregunta n. ° 1, se asignan no git log --graph , sino más bien secuencialmente , cada vez que el git log --graph toma un nuevo "número de columna". Lamentablemente, hay dos problemas que conozco. Ambos se relacionan con tu pregunta n. ° 2.

Aquí está la list completa de colors por nombre :

  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, 

Visualmente, muchos de estos colors "se ven iguales" (o lo suficientemente similares como para ser indistinguibles). En particular, encuentro que los "negrita" se parecen demasiado a los "regulares", a less que haya bastantes letras impresas en "negrita", es decir, que la fuente de mi terminal Mac sea "negrita" simplemente no es demasiado negrita. que su peso estándar. Esto hace que muchas líneas sean visualmente similares en el gráfico para git log --graph --decorate --oneline --all ejecuta en el repository de Git para Git, por ejemplo.

Editar : ahora es modificable (o puede funcionar), a partir de Git 2.12, utilizando la nueva input de configuration log.graphColors . Esta es una list separada por comas de nombres de colors o numbers de colors (consulte la input de la documentation de git config para "color" en la sección Valores ).

En segundo lugar, el "número de columna" actualmente no es el número de columna de la línea . En cambio, es el número de columna de la confirmación . El color de la línea sube desde esa confirmación hasta la confirmación anterior. Todas las líneas magenta en su instantánea de image van a confirmaciones impresas en la columna # 0: tanto a55fd8d como 3c1494a están en "columna 0". (Ambos son compromisos de fusión para que consoliden las líneas entrantes).

¿Es posible pedirle a Git que elija los colors sabiamente para evitar que las mismas líneas de color se solapen (sin tener en común)?

Siempre puede clonar el repository de Git para Git y escribir un nuevo código. Notaré que el graph.c existente es casi 1400 líneas de largo, sin embargo.

En este commit 73c727d69f47572bf7f21fa31831f9a3fdad944c ("log -graph: personalizar las líneas del gráfico con config log.graphColors", 2017-01-19), es posible elegir los colors con la configuration log.graphColors .

Incluso con un terminal estándar, si el color de background no es negro o blanco, entonces la línea del gráfico puede coincidir con su background y ocultarse. Puede excluir el color de background (o simplemente los colors que odia) con esto.

Yo uso Git Bash y excluyo el color GIT_COLOR_BLUE por el motivo anterior.

Puedo usar cualquier código de color hexadecimal (al less en Git Bash). La configuration de configuration inferior usa solo tres colors.

 [log] graphColors = "#ffffff",networking,green