`rbt land` command for landing changes in upstream

Review Request #6509 - Created Oct. 26, 2014 and submitted

Azad Salahli
RBTools
master
2f08592...
rbtools, students

rbt land command for landing changes in upstream
See https://reviewboard.hackpad.com/rbt-land-YrgGuhTuseU
for detailed description of the command.

What works:

  • Merging/rebasing a branch with/on destination branch.
  • Adding a commit message based on the review request.
  • Pushing to upstream
  • A wrapper around rbt patch in order to allow landing
    others' changes.
  • Successfully merged and rebased a feature branch to/on master branch.

  • Successfully patched a review request from another user and landed it
    on upstream.

  • Tested with:

    • empty repo
    • unclean working directory
    • unapproved review request
    • same target and destination branches
    • incorrect target/destination branch
    • incorrect upstream repository

and got appropriate error messages, as expected.

  • 0
  • 0
  • 60
  • 16
  • 76
Description From Last Updated
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
  2. rbtools/commands/land.py (Diff revision 1)
     
     
     'APIError' imported but unused
    
  3. rbtools/commands/land.py (Diff revision 1)
     
     
     'execute' imported but unused
    
  4. rbtools/commands/land.py (Diff revision 1)
     
     
    Col: 80
     E501 line too long (81 > 79 characters)
    
  5. rbtools/commands/land.py (Diff revision 1)
     
     
    Col: 1
     W391 blank line at end of file
    
  6. setup.py (Diff revision 1)
     
     
     'json' imported but unused
    
  7. 
      
Azad Salahli
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
  2. rbtools/clients/git.py (Diff revision 2)
     
     
     local variable 'remote' is assigned to but never used
    
  3. rbtools/commands/land.py (Diff revision 2)
     
     
     'APIError' imported but unused
    
  4. rbtools/commands/land.py (Diff revision 2)
     
     
     'InvalidRevisionSpecError' imported but unused
    
  5. rbtools/commands/land.py (Diff revision 2)
     
     
     'execute' imported but unused
    
  6. rbtools/commands/land.py (Diff revision 2)
     
     
    Col: 80
     E501 line too long (85 > 79 characters)
    
  7. rbtools/commands/land.py (Diff revision 2)
     
     
    Col: 80
     E501 line too long (81 > 79 characters)
    
  8. rbtools/commands/land.py (Diff revision 2)
     
     
    Col: 80
     E501 line too long (83 > 79 characters)
    
  9. rbtools/commands/land.py (Diff revision 2)
     
     
    Col: 1
     W391 blank line at end of file
    
  10. setup.py (Diff revision 2)
     
     
     'json' imported but unused
    
  11. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
  2. setup.py (Diff revision 3)
     
     
     'json' imported but unused
    
  3. 
      
Azad Salahli
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/clients/git.py
    
    
  2. setup.py (Diff revision 4)
     
     
     'json' imported but unused
    
  3. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/utils/process.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/utils/process.py
        rbtools/clients/git.py
    
    
  2. rbtools/commands/land.py (Diff revision 5)
     
     
    Col: 1
     W391 blank line at end of file
    
  3. setup.py (Diff revision 5)
     
     
     'json' imported but unused
    
  4. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/utils/process.py
        rbtools/clients/git.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        setup.py
        rbtools/utils/process.py
        rbtools/clients/git.py
    
    
  2. setup.py (Diff revision 6)
     
     
     'json' imported but unused
    
  3. 
      
Christian Hammond
  1. 
      
  2. rbtools/clients/git.py (Diff revision 6)
     
     

    Let's use "squash" instead of "flatten".

    Also, this function and push_upstream need to have NotImplemented stubs in SCMClient.

  3. rbtools/clients/git.py (Diff revision 6)
     
     
     

    Blank line between these.

  4. rbtools/clients/git.py (Diff revision 6)
     
     
     
     

    Say you do this on 'master', and your commit is already there. Doing a pull is going to pull down new content and merge it in, creating a bit of an annoying merge graph, before pushing.

    What you probably want here is 'git pull --rebase'.

    Also, pull and push will, depending on settings/version of git, pull/push all branches. I'd be explicit with taking a branch name and passing it in this function.

  5. rbtools/clients/git.py (Diff revision 6)
     
     

    Missing a trailing period.

  6. rbtools/commands/land.py (Diff revision 6)
     
     
     
     
     

    This doesn't really describe what the command does. We should have a lot more detail about what this is and why/how it's used.

  7. rbtools/commands/land.py (Diff revision 6)
     
     

    The """ should be on the next lin.

    1. In Patch, """ is placed as in this one. Should I change it too, or should I keep this?

  8. rbtools/commands/land.py (Diff revision 6)
     
     

    Merging shouldn't squash. Or are you saying it'd be the inverse?

    1. Yes, since this is more about squashing the history vs. keeping it, rather than merging vs. rebasing. So, --squash would squash everything into one commit, while default would preserve the history.

  9. rbtools/commands/land.py (Diff revision 6)
     
     
     
     

    Can this be done now?

  10. rbtools/commands/land.py (Diff revision 6)
     
     
     

    Just from the common ones, right?

    How about doing that as part of this change?

  11. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/clients/git.py (Diff revision 7)
     
     
    Col: 80
     E501 line too long (84 > 79 characters)
    
  3. rbtools/clients/git.py (Diff revision 7)
     
     
     undefined name 'branch'
    
  4. rbtools/clients/git.py (Diff revision 7)
     
     
     undefined name 'branch'
    
  5. rbtools/utils/commands.py (Diff revision 7)
     
     
    Col: 1
     E302 expected 2 blank lines, found 1
    
  6. rbtools/utils/commands.py (Diff revision 7)
     
     
    Col: 1
     E302 expected 2 blank lines, found 1
    
  7. setup.py (Diff revision 7)
     
     
     'json' imported but unused
    
  8. 
      
Azad Salahli
Review Bot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/clients/git.py (Diff revision 8)
     
     
    Col: 80
     E501 line too long (83 > 79 characters)
    
  3. setup.py (Diff revision 8)
     
     
     'json' imported but unused
    
  4. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/clients/git.py (Diff revision 9)
     
     
    Col: 69
     W291 trailing whitespace
    
  3. setup.py (Diff revision 9)
     
     
     'json' imported but unused
    
  4. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. setup.py (Diff revision 10)
     
     
     'json' imported but unused
    
  3. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. setup.py (Diff revision 11)
     
     
     'json' imported but unused
    
  3. 
      
Christian Hammond
  1. 
      
  2. rbtools/commands/land.py (Diff revision 11)
     
     

    "to the remote repository"

  3. rbtools/commands/land.py (Diff revision 11)
     
     

    .reviewboardrc shoudn't be required. It hsould be possible to specify on the command line.

  4. rbtools/commands/land.py (Diff revision 11)
     
     

    I prefer full sentences that sound more natural, like "A review request ID is required."

  5. rbtools/commands/land.py (Diff revision 11)
     
     

    This change I think predates the discussion on this, but "BRANCH" can't be used for any kind of real determinations like this. That option purely handles the visual display of a branch, and can contain any text.

  6. rbtools/commands/land.py (Diff revision 11)
     
     

    This may not be very clear when the user hits it and doesn't realize that they chose the same branch. How about:

    "The local branch cannot be merged onto itself. Try a different local branch or destination branch."

  7. rbtools/commands/land.py (Diff revision 11)
     
     

    We can't depend on this attribute existing on the review request. It's new in 2.0.

    You can check with hasattr().

    If it doesn't exist, we can check review_request.ship_it_count.

  8. rbtools/commands/land.py (Diff revision 11)
     
     
     

    "The specified review request ..."

    This should also include the review_request.approval_failure text.

    1. I changed this line to only print approval_failure text, since it clearly explains the problem.

  9. rbtools/commands/land.py (Diff revision 11)
     
     

    This should now be MergeError as e.

    Same in all other cases.

  10. rbtools/commands/land.py (Diff revision 11)
     
     

    How about "... has landed on <branch>"

  11. rbtools/utils/commands.py (Diff revision 11)
     
     

    I had to read the code and think through it to realize what this is doing and why it's there.

    How about calling this build_rbtools_cmd_argv, and having the docs be clear that this is used to take common options passed on the command line or in .reviewboardrc and convert them back into a set of arguments for calling another RBTools command?

  12. rbtools/utils/commands.py (Diff revision 11)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    There's a way to simplify this and make the function in general a lot more useful.

    Instead of hard-coding all these here, this function can take a dictionary (defaulting to a predefiend dictionary constant in this module) and build the command lines from that. It can do this with:

    ```python
    def build_rbtools_cmd_argv(options, options_map=DEFAULT_OPTIONS_MAP):
    argv = []

    for option_key, arg_name in six.iteritems(options_map):
        option_value = getattr(options, option_key, None)
    
        if option_value is True:
            argv.append(arg_name)
        elif option_value not in (False, None):
            argv.extend([arg_name, option_value])
    
    return argv
    
  13. 
      
Barret Rennie
  1. 
      
  2. rbtools/clients/git.py (Diff revision 11)
     
     

    Use a double quote and put the branch name in single quotes, e.g.

    raise MergeError("Could not checkout branch '%s' ...)
    

    It also might read better if the error is on the same line, seperated by a colon instead of newlines.

    Same below.

    1. Added single quotes as you suggested. But newlines are there to seperate error message from SCM command output.

  3. rbtools/clients/git.py (Diff revision 11)
     
     

    Quote branchname in single quotes.

  4. rbtools/commands/land.py (Diff revision 11)
     
     

    Since we're moving to Py2.5+, you'll want to use the new print function. At the top of your file:

    from __future__ import print_function
    

    and then here you call print as a function with parentheses: print('Review request %s ...' % request_id)

    Likewise elsewhere you use print.

  5. rbtools/commands/patch.py (Diff revision 11)
     
     

    This was changed in https://reviews.reviewboard.org/r/6578/ to use __future__.print_function.

    You should pull master and rebase your changes off of it. Your patch may not cleanly apply, otherwise.

  6. 
      
Azad Salahli
Review Bot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/commands/land.py (Diff revision 12)
     
     
    Col: 36
     E111 indentation is not a multiple of four
    
  3. rbtools/commands/land.py (Diff revision 12)
     
     
    Col: 36
     E113 unexpected indentation
    
  4. rbtools/commands/land.py (Diff revision 12)
     
     
    Col: 17
     E113 unexpected indentation
    
  5. rbtools/commands/land.py (Diff revision 12)
     
     
    Col: 17
     E112 expected an indented block
    
  6. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Azad Salahli
Review Bot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/commands/land.py (Diff revision 14)
     
     
    Col: 25
     W601 .has_key() is deprecated, use 'in'
    
  3. 
      
Azad Salahli
Review Bot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. rbtools/commands/land.py (Diff revision 16)
     
     
    Col: 80
     E501 line too long (81 > 79 characters)
    
  3. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Christian Hammond
  1. Just a few things left. Some small wording changes, and a couple things we can now implement based on a recent commit.

    Looking great! Can't WAIT to land this :)

  2. rbtools/commands/__init__.py (Diff revision 17)
     
     

    "are" considered optional.

  3. rbtools/commands/land.py (Diff revision 17)
     
     

    "an upstream repository."

  4. rbtools/commands/land.py (Diff revision 17)
     
     

    "the patching step."

  5. rbtools/commands/land.py (Diff revision 17)
     
     
     
     

    Instead of hard-coding here, it's best to identify what's missing in SCMClients that this function needs to support. We can then add a can_<something> boolean attribute to SCMClient, defaulting to False, and add an equivalent to the supported SCMClients, set to True.

    This would then check for those attributes instead. See the new rbt stamp for another case where this is done.

    I imagine we'd want can_merge and can_push_upstream.

    This way, other SCMClients will get support for this when those functions are implemented.

  6. rbtools/commands/land.py (Diff revision 17)
     
     

    I just pushed a change that adds this. See what commands/stamp.py and commands/post.py do now.

    1. I will do this as a follow up, in a seperate review request.

  7. rbtools/commands/land.py (Diff revision 17)
     
     

    "Review Board".

    Can you say: "... an old version (pre-2.0)" that ..."

  8. rbtools/commands/land.py (Diff revision 17)
     
     
     

    Blank line between these.

  9. rbtools/commands/land.py (Diff revision 17)
     
     
     
     

    If we have approved and approval_failure, we have issue_open_count. They were introduced in the same release.

  10. rbtools/commands/land.py (Diff revision 17)
     
     
     

    The ending paren should be on the self.options.squash line.

  11. rbtools/utils/commands.py (Diff revision 17)
     
     

    We don't put parens around individual conditions.

  12. rbtools/utils/commands.py (Diff revision 17)
     
     

    Same here.

  13. rbtools/utils/commands.py (Diff revision 17)
     
     

    This looks left over from something.

  14. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Christian Hammond
  1. 
      
  2. rbtools/commands/land.py (Diff revisions 17 - 18)
     
     
     

    This needs to raise a CommandError for the output to be properly shown. Otherwise it'll appear as a crash.

    Also, can you put the space after the %s instead of on the next line, and the % self.tool.name on the next line? Like:

    raise CommandError('This command ... %s '
                       'repositories.'
                       % self.tool.name)
    
    1. Actually, even better would be:

      raise CommandError(
          'This command ... repositories.'
          % self.tool.name)
      

      If that fits.

  3. rbtools/commands/land.py (Diff revisions 17 - 18)
     
     

    "support the `approved` field."

  4. rbtools/commands/land.py (Diff revision 18)
     
     
     

    You can probably make this one line by doing:

    approval_failure = \
        'The review request ...'
    
  5. 
      
Azad Salahli
Review Bot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Azad Salahli
Review Bot
  1. Tool: PEP8 Style Checker
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
    
    Tool: Pyflakes
    Processed Files:
        rbtools/commands/land.py
        rbtools/utils/commands.py
        rbtools/commands/__init__.py
        rbtools/commands/patch.py
        rbtools/clients/__init__.py
        rbtools/clients/git.py
        setup.py
        rbtools/clients/errors.py
    
    Ignored Files:
        AUTHORS
    
    
  2. 
      
Azad Salahli
Review request changed

Status: Closed (submitted)

Change Summary:

Pushed to master (e11deb8)
Loading...