Add recursive landing support

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

Information

RBTools
master
92aa9a9...

Reviewers

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
graph.

Succesfully landed https://reviews.reviewboard.org/r/7323 and all of
its dependencies recursively.

Description From Last Updated

I think the typical abbreviation of "topological" is "topo", not "top".

daviddavid
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
  2. 
      
david
  1. 
      
  2. rbtools/utils/graphs.py (Diff revision 1)
     
     
    Show all issues

    I think the typical abbreviation of "topological" is "topo", not "top".

  3. 
      
brennie
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
    
    Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
  2. 
      
david
  1. Did you forget to set the parent revision when posting? It looks like this latest revision also contains the refactor changes.

    1. I did indeed, oops!

  2. 
      
brennie
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/api/resource.py
        rbtools/utils/graphs.py
    
    
  2. 
      
david
  1. Ship It!
  2. 
      
brennie
Review request changed
Status:
Completed
Change Summary:
Pushed to master (92c5e8e)