• tandrii@chromium.org's avatar
    git cl: Rework Changelist class for Rietveld/Gerrit use. · aa5ced18
    tandrii@chromium.org authored
    This adds pluggable codereview-specific implementations into
    Changelist class. The specific implementation is chosen at
    Changelist automatically, with Rietveld being default for
    backwards compatibility.
    
    Gerrit implementation for Gerrit is incomplete, and will be
    added in later CLs. However, it is sufficient to ensure
    current functionality of this tool is not diminished.
    
    Sadly, the base class isn't completely free from Rietveld
    assumptions because of presubmit_support. Apparently, PRESUBMIT
    scripts can make use of Rietveld instance for RPCs directly.
    This use doesn't make sense for Gerrit, which substitutes
    rietveld instance with a dummy object, which raises exception
    on any attribute access with a diagnostic message.
    
    This also includes refactoring of some related code which
    (ab)used ChangeList. Overall, this CL adds a few extra call to
    git config in order to determine which codereview to use, but
    but it shouldn't have any performance impact.
    
    These is a reland of these 4 CLs + with several fixes.
    patch from issue 1827523003 at patchset 20001 (http://crrev.com/1827523003#ps20001)
    patch from issue 1830703004 at patchset 1 (http://crrev.com/1830703004#ps1)
    patch from issue 1830923002 at patchset 60001 (http://crrev.com/1830923002#ps60001)
    patch from issue 1805193002 at patchset 380001 (http://crrev.com/1805193002#ps380001)
    
    This CL without a fix was also committed and reverted as
    patch from issue 1830973003 at patchset 40001 (http://crrev.com/1830973003#ps40001)
    
    R=machenbach@chromium.org,sergiyb@chromium.org,andybons@chromium.org
    BUG=579160,597638
    
    Review URL: https://codereview.chromium.org/1838143002
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@299530 0039d316-1c4b-4281-b951-d872f2087c98
    aa5ced18
git_cl_test.py 33.1 KB