mercurial - Is there any way to change how graphs are drawn in TortoiseHg? -
being used how clearcase draw graphs find mercurial's , tortoisehg's way confusing @ first glance.
this how i'd represented: static positions branches. e.g. maintenance branch left/right , preferably in straight line , not current spaghetti curved branch (see below link).
this how looks using tortoisehg explorer. graph test repository. :-)
is there way change how graphs drawn in mercurial?
[edit]
check out machg , how draws graphs. more in line of i'd see myself.
the problem forking commit creates "anonymous" branch (as opposed named branch, different concept), , default graph view can't place commits in static columns without having ids. thus, implementor gave , have current graph.
now, think first view give awesome, , should possible use heuristics assign ids anonymous branches depending on (developer1-a, developer2-a, developer2-b, etc). that'd cool. :)
contribution time!
update
what i'd see:
- commits sorted vertically commit time, rather revision integer id.
- commits sorted horizontally, grouped named branch, , per committer inside each branch. (and each committers commits should near, in case committer has forked , merged own data.)
this means algorithm has @ commits (that viewed) before populating view , placing commit "dots" in right column/row.
three passes on commits ought suffice though, , each can done in o(n) time, o(n) everything:
- walk gather data (gather branches/committers) (o(n))
- sort branches/commits suitable column order
- sort commits commit time (o(n log n) or better o(n) radix-sort on seconds since epoch)
- walk commits , draw dots , ancestor lines according grouping
maybe need smart(er) when routing lines between commits, remains seen. especially, use vertical space between commit-dots connect merges far apart vertically (i.e. in time), instead of using entire column current algorithm
Comments
Post a Comment