Cache SVNRepositoryInfo object

Review Request #7229 — Created April 19, 2015 and submitted

Information

RBTools
master
d624fd7...

Reviewers

get_repository_info() produces an SVNRepositoryInfo object and also checks that the svn command line client exists, checks that GNU diff exists, and determines the SVN client version. None of this information is expected to change during during the course of a single invocation of 'rbt', yet multiple calls to get_repository_info() will always perform the same set of steps. When executing 'rbt diff/post' this is evident as get_repository_info() is called once when initially scanning for an SCM client and a second time when generating a diff. This leads to redundant work as the instantiation of the SVNRepositoryInfo object and other checks are performed twice.

SVNClient is updated to cache the resultant SVNRepositoryInfo object from get_repository_info() and subsequent calls to get_repository_info() will immediately return the cached object.

  • Executed 'rbt diff' in debug mode. Prior to the change, there were two sets of log messages for checks performed in get_repository_info(). After the change there is only one set.
  • Ran unit tests.
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        rbtools/clients/svn.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        rbtools/clients/svn.py
    
    
  2. 
      
brennie
  1. Ship It!
  2. 
      
gmyers
Review request changed
Status:
Completed
Change Summary:
Pushed to master (4ff26a7)