Para un proyecto de investigación, he intentado replicar la vista de gráfico presente en software de control de versiones como SourceTree o TortoiseGit.

La vista de gráfico que estoy tratando de implementar La vista de gráfico que estoy intentando implementar

El mayor problema que tengo es encontrar a qué rama pertenece una confirmación. Si tengo esto, puedo asignarle al punto de confirmación una columna y un color. Esto es difícil porque bajo el capó, Git no almacena la rama en la que estaba inicialmente la confirmación.

Mirando otras soluciones en StackOverflow, descubrí que es posible obtener una lista de ramas que contienen la confirmación, pero necesito un método para aislar una sola para mostrarla en mi gráfico. De la misma manera, SourceTree o TortoiseGit logran hacerlo de alguna manera.

Mi problema también es idéntico a este, Descubra el rama a la que pertenece una confirmación en LibGit2Sharp?

Parece que descubrieron la solución real en una sala de discusión privada. Sin embargo, no tengo la reputación de comentar y preguntar qué encontraron.

¿Alguien tiene alguna idea sobre cómo podría hacer esto?

O @nulltoken, si por casualidad ven esto y recuerdan, ¿saben lo que descubrieron en esa sala de discusión?

7
Jade White 14 nov. 2017 a las 06:04

2 respuestas

La mejor respuesta

Resulta que para generar el gráfico, SourceTree no necesita saber en qué rama se encuentra una confirmación.

La primera confirmación en el gráfico siempre tiene una columna de 0. Además, es posible obtener una lista de las confirmaciones principales de una determinada confirmación. Al comenzar con la primera confirmación e iterar hacia atrás, pueden generar un gráfico atractivo utilizando solo esta información.

0
Jade White 10 may. 2018 a las 22:02

No estoy seguro de la utilidad de esta respuesta. La llamada equivalente de LibGit2Sharp para "git branch --contains $SHA1" es una función solicitada en GitHub, una abierta!

Hace mucho tiempo, utilicé una consulta sobre todas las referencias como esta, pero para su caso de uso puede ser prohibitivamente lento.

Estaba tratando de pensar en posibles formas de mitigar este problema, pero no pude encontrar ninguna luz guía. :( Y luego descubrí este comentario que afirma que debe atravesar el DAG y validar la rama real que tiene la confirmación Todo apunta a que necesitaría utilizar el enfoque de recorrido lento de todos los ref.

2
vishwarajanand 25 ene. 2019 a las 07:09