Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
revset_graph: queue linear history per branch, emit at fork point
This is similar to Mercurial's "topo" sorting, but merge handling seems different. Mercurial's dagop.toposort() tracks [(roots, descendants)], and merged ancestors are combined into a single tracking record. OTOH, ours tracks {root: descendants}, and merged ancestors are split into separate tracking records. I don't know which one will produce a better result, but I think the latter is easier to implement. Compared to Sapling's beautify_graph(), this is lazy, and can roughly preserve the index (or chronological) order. I tried beautify_graph() with prioritizing the @ commit, but the result seemed too aggressively reordered. Perhaps, for merge-heavy history (or branchy history in reverse order), beautify_graph() will produce significantly better result. For my wip branches (~30 branches, a couple of commits per branch), this works pretty well. Closes martinvonz#242
- Loading branch information