Add recursive landing support

Review Request #7330 — Created May 22, 2015 and submitted — Latest diff uploaded




The rbt land command can now land review requests recursively; that
is, it can now land all the unlanded review requests in the same
repository that the review request depends on. It also does this in
the correct order so that they should apply successfully.

This is accomplished by building a dependency graph of the review
request and generating a topological sorting of this graph. The
reversed topological sorting yields a correct order for landing the
dependant review requests. This is because the relationship that
determines what to land first is blocking. A reversed topological
sorting of the dependency graph is a valid topological sorting of the
blocking graph (as the blocking graph is the transpose graph of the
dependency graph).

Graph utilities have been added in rbtools.utils.graphs for
traversing a graph in depth-first order, generating a topological
sort, and determining if a path exists between two vertices in a

Succesfully landed and all of
its dependencies recursively.