Two branches a and b starting at root, with commits interleaved like: root a0 a1 b0 a2 a3 b1 were converted in the following order: root a0 b0 a1 b1 a2 a3 Replace depth based toposort with a more classic traversal method.