• 
      

    Improve robustness of --svn-show-copies-as-adds option and respect included files

    Review Request #6960 — Created Feb. 18, 2015 and submitted

    Information

    RBTools
    master
    bd7b63e...

    Reviewers

    This fixes Issue #3649 where previously history_scheduled_with_commit() did not respect explicitly included files when determining if an SVN changeset contained an addition-with-history. history_scheduled_with_commit() now adds included files to the call to svn status similar to how it is done for an SVN changelist.

    In the process of fixing the issue I came across several other minor deficiencies related to the --svn-show-copies-as-adds option and I have also cleaned those up:

    1. The SVN client version is checked before doing anything related to --svn-show-copies-as-adds, as the underlying SVN argument (--show-copies-as-adds) did not come into existence until version 1.7.0.
    2. The existence of --svn-show-copies-as-adds is checked before calling history_scheduled_with_commit(). If the user has already specified this option then there is no point in doing additional work.
    3. In history_scheduled_with_commit() add '-q' argument to svn status call to suppress unversioned items. For working copies with unversioned items, the addition of this argument will result in fewer status lines to process.
    4. svn status reports details about files contained in changelists at the end of its output, after detailing all non-changelist files. In the case where we are not working with a changelist, return early when we get to the changelist "section" of the status output so as not to possibly incorrectly detect history from a changelist.
    5. In history_scheduled_with_commit() respect exclude_patterns so as not to possibly incorrectly detect history from an excluded file.

    To support checking the SVN client version, is_valid_version() is relocated from rbtools/clients/git.py to rbtools/utils/checks.py. Moving to this common location allows the function to be used by both the git and SVN clients without duplicating code. The unit test related to this function (test_is_valid_version()) is also relocated to rbtools/utils/tests.py.

    I've added unit tests which should exercise all aspects of these changes.
    Description From Last Updated

    Col: 41 E231 missing whitespace after ','

    reviewbotreviewbot

    Col: 43 E231 missing whitespace after ','

    reviewbotreviewbot

    Col: 14 E713 test for membership should be 'not in'

    reviewbotreviewbot

    local variable 'result' is assigned to but never used

    reviewbotreviewbot

    This should indeed go into a common place. Maybe rbtools/utils/checks.py?

    daviddavid

    Please remove the blank line between these two (nose and six are both third-party packages).

    daviddavid

    I don't think we have anywhere else with newlines in the help text. How about: help='Treat copied or moved files …

    daviddavid

    Col: 1 E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    Variable names should use underscores, not camelCase.

    daviddavid
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/clients/tests.py
          rbtools/clients/svn.py
          rbtools/commands/__init__.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/clients/tests.py
          rbtools/clients/svn.py
          rbtools/commands/__init__.py
      
      
    2. rbtools/clients/svn.py (Diff revision 1)
       
       
      Show all issues
      Col: 41
       E231 missing whitespace after ','
      
    3. rbtools/clients/svn.py (Diff revision 1)
       
       
      Show all issues
      Col: 43
       E231 missing whitespace after ','
      
    4. rbtools/clients/svn.py (Diff revision 1)
       
       
      Show all issues
      Col: 14
       E713 test for membership should be 'not in'
      
    5. rbtools/clients/tests.py (Diff revision 1)
       
       
      Show all issues
       local variable 'result' is assigned to but never used
      
    6. 
        
    gmyers
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/clients/tests.py
          rbtools/clients/svn.py
          rbtools/commands/__init__.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/clients/tests.py
          rbtools/clients/svn.py
          rbtools/commands/__init__.py
      
      
    2. 
        
    david
    1. 
        
    2. rbtools/clients/svn.py (Diff revision 2)
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      This should indeed go into a common place. Maybe rbtools/utils/checks.py?

    3. rbtools/clients/tests.py (Diff revision 2)
       
       
       
       
      Show all issues

      Please remove the blank line between these two (nose and six are both third-party packages).

    4. rbtools/commands/__init__.py (Diff revision 2)
       
       
       
       
      Show all issues

      I don't think we have anywhere else with newlines in the help text. How about:

      help='Treat copied or moved files as new files '
           '(Subversion 1.7+ only).',
      
      1. I do see a few other instances where there are newlines in the help text.  In particular I modeled this after the text for --include and --exclude where a newline appears between the basic help description and a list of supported SCM clients.  That said, I'm happy to switch to your suggested text if that would be preferred.
      2. I think I would prefer that (I'll go through and clean up the existing ones).

      3. Actually, nevermind, it's more prevalent than I had thought. As-is is fine.

    5. 
        
    gmyers
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
    2. rbtools/utils/checks.py (Diff revision 3)
       
       
      Show all issues
      Col: 1
       E302 expected 2 blank lines, found 1
      
    3. 
        
    gmyers
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
    2. 
        
    gmyers
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
    2. 
        
    david
    1. 
        
    2. rbtools/clients/svn.py (Diff revision 5)
       
       
       
      Show all issues

      Variable names should use underscores, not camelCase.

    3. 
        
    gmyers
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          rbtools/utils/tests.py
          rbtools/clients/tests.py
          rbtools/commands/__init__.py
          rbtools/clients/git.py
          rbtools/utils/checks.py
          rbtools/clients/svn.py
      
      
    2. 
        
    david
    1. Ship It!
    2. 
        
    gmyers
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-0.7.x (e20a1ba)