2010-10-07 7 views
13

Al estar acostumbrado a la forma en que ClearCase dibuja los gráficos, encuentro que Mercurial y TortoiseHg son confusos a primera vista.¿Hay alguna forma de cambiar cómo se dibujan los gráficos en TortoiseHg?

This es como me gustaría que ser representado: Static position for branches (good) Con posiciones estáticas para las ramas. P.ej. La bifurcación de mantenimiento a la izquierda/derecha siempre y preferentemente en línea recta y no en la rama curva de spaghetti actual es ahora (ver el enlace a continuación).

This es lo que parece usar el Explorador de TortoiseHg. El gráfico es de un repositorio de prueba. :-) Graph in TortoiseHg (bad)

¿Hay alguna manera de cambiar cómo se dibujan los gráficos en Mercurial?

[editar]

Salida MacHg y cómo se dibuja las gráficas. Esto está más en línea con lo que me gustaría ver a mí mismo. static/stable graph in MacHg

+0

cualquier actualización sobre cómo hacer que TortoiseHG muestre posiciones estáticas para la sucursal ? – tkokasih

+0

@wannabeprogrammer Ninguno de mi parte. Desde que escribí esta pregunta, aprendí a dejar de pensar en ramas (estilo ClearCase o Subversion) y, en cambio, lo veo como marcadores. Cambiar a Git ayudó con eso. – MdaG

Respuesta

5

El problema es que cualquier bifurcación cometer crea una rama de "anónimo" (en oposición a una rama llamada, que es un concepto ligeramente diferente), y la vista gráfico predeterminado no puede place commits en columnas estáticas sin tener buenos ids. Por lo tanto, el implementador se rindió y tenemos el gráfico actual.

Ahora, creo que la primera vista que das es increíble, y debería ser posible usar algunas heurísticas para asignar identificadores a ramas anónimas dependiendo de (desarrollador1-a, desarrollador2-a, desarrollador2-b, etc.). Eso sería genial. :)

¡Hora de la contribución!

actualización

Lo que me gustaría ver:

  • compromete ordenados verticalmente por dedicar tiempo, en lugar de ID de revisión número entero.
  • Commite ordenados horizontalmente, agrupados por rama con nombre, y por committer dentro de cada rama. (Y cada Committers compromete deben estar cerca, en caso de un confirmador se ha dividido y se fusionó sus propios datos.)

Esto significa un algoritmo tiene que mirar a todos los envíos (que se han de considerarse) antes de ocupar la vista y colocando los "puntos" de compromiso en la columna/fila de la derecha.

tres pasadas sobre todos los envíos debería ser suficiente sin embargo, y cada uno se puede hacer en tiempo O (n), que es O (n) para todo:

  • caminar todo para recopilar datos (recoger ramas/committers) (o (n))
  • ramas ordenar/comete en orden columna adecuada
  • tipo compromete a través de cometer tiempo (o (n log n) o mejor o (n) con radix-sort en segundos desde época)
  • Compromisos de paseo y dibujar puntos y líneas ancestrales según la agrupación

Quizás necesitemos ser inteligentes (er) al enrutar las líneas entre confirmaciones, pero eso está por verse. Especialmente, podríamos usar espacio vertical entre puntos de compromiso para conectar fusiones que están muy separadas verticalmente (es decir, en el tiempo), en lugar de usar una columna completa como el algoritmo actual

+0

Me encantaría contribuir con algo como esto, solo necesito más tiempo. :-) – MdaG

+0

@MDAG: Sí, yo también. :) – Macke

+0

Estaba pensando en tomarme un tiempo fuera de horario para contribuir con esto ... ¡pero lo que acabas de decir pasó por mi cabeza! Uso mercurial a diario y no estoy seguro de entender lo que quieres decir. ¿Podrías explicar un poco más? – Samaursa

3

Por el momento, parece que no hay nada disponible para hacer la visualización en la forma que desee.

Supongo que la visualización del explorador TortoiseHg es directamente desde la extensión del registro de gráficos.

Cómo siempre, hay una visualización basada graphviz, aunque es similar a graphlog pero se puede entrar ilegalmente en él alguna manera de hacerlo más visual mejor.

+0

Interesante, echaré un vistazo a eso. :-) – MdaG

+0

Es una vieja pregunta, pero ¿hay alguna actualización para cambiar la forma en que se muestra el gráfico? – tkokasih

Cuestiones relacionadas