propose graphopt revisions order transforms
hallow!
here attached a bundle with brach, that provides graphopt.Graph with transformations that should give a bit comfort/handy revision tree view.
Provided 2 transforms:
-
parents_line_closer
- for selected revision it moves a line of parents from first ancestor, right below target revision. so, if it faaaar from inerested revision, it try to move them close to view -
reorder_for_merge
- for selected merge revision, it looks for revs that are above parents, and try to move them above selected child. After move descendants above merge point, it reduces length of lines to parents. And, possibly, reduces some lines. It intended to make a history more clear, and most intended - make a tree width as less as can.
Motivation:
Second transform is a target of this work. It motivated by repo imported from git, that have such a big amount of merges, that ordered so inconvinient, that width of graph comes a few screens. and amount of lines to parents so big, that no any possibility to track them.
This kind of graphs comes from hggit behaviour - it imports revision not in date order, but per brach. so if say release
branch have maaaaany merges from dev
branch - you got a tree as wide flag.
To manage such a history, i has try to order revisions by date, but unfortunaly - order of revision not strongly meets date order. So need a reorder, that still keep DAG consistent, but recovers some historic-close order.
I guess, that merges order is most historic-like. And reorder_for_merge
provide it.
How to use:
- UI
-
context menus on a
graph
column now have a checkboxed liist of avail transforms. Just check what you need. Or Disable all.context menus on
rev
column have item do disable all transforms.This transforms apply over all tree.
-
context menus on revision item in graph column have submenu
transforms
- where can invoke avail transform per revision.
- config
config ini can specify transforms that can be apply over tree on repo load.
in section [tortoisehg]
, place
<transform name> = boolean