Index: presubmit_support.py |
diff --git a/presubmit_support.py b/presubmit_support.py |
index 2b01bc356401cea34d7634b6ab87d3ba120a893b..5d80cc5512f3408769b5b15e59ec36b50248429c 100755 |
--- a/presubmit_support.py |
+++ b/presubmit_support.py |
@@ -36,12 +36,14 @@ import traceback # Exposed through the API. |
import types |
import unittest # Exposed through the API. |
import urllib2 # Exposed through the API. |
+import urlparse |
from warnings import warn |
# Local imports. |
import auth |
import fix_encoding |
import gclient_utils |
+import gerrit_util |
import owners |
import presubmit_canned_checks |
import rietveld |
@@ -1642,6 +1644,8 @@ def main(argv=None): |
help="A list of checks to skip which appear in " |
"presubmit_canned_checks. Can be provided multiple times " |
"to skip multiple canned checks.") |
+ parser.add_option("--gerrit_url", help=optparse.SUPPRESS_HELP) |
+ parser.add_option("--gerrit_fetch", help=optparse.SUPPRESS_HELP) |
parser.add_option("--rietveld_url", help=optparse.SUPPRESS_HELP) |
parser.add_option("--rietveld_email", help=optparse.SUPPRESS_HELP) |
parser.add_option("--rietveld_fetch", action='store_true', default=False, |
@@ -1664,10 +1668,15 @@ def main(argv=None): |
else: |
logging.basicConfig(level=logging.ERROR) |
+ if (any((options.rietveld_url, options.rietveld_email_file, |
+ options.rietveld_fetch, options.rietveld_private_key_file)) |
+ and any((options.gerrit_url, options.gerrit_fetch))): |
+ parser.error('Options for only codereview --rietveld_* or --gerrit_* ' |
+ 'allowed') |
+ |
if options.rietveld_email and options.rietveld_email_file: |
parser.error("Only one of --rietveld_email or --rietveld_email_file " |
"can be passed to this program.") |
- |
if options.rietveld_email_file: |
with open(options.rietveld_email_file, "rb") as f: |
options.rietveld_email = f.read().strip() |
@@ -1697,6 +1706,26 @@ def main(argv=None): |
options.description = props['description'] |
logging.info('Got author: "%s"', options.author) |
logging.info('Got description: """\n%s\n"""', options.description) |
+ |
+ if options.gerrit_url and options.gerrit_fetch: |
+ rietveld_obj = None |
+ assert options.issue and options.patchset |
+ props = gerrit_util.GetChangeDetail( |
+ urlparse.urlparse(options.gerrit_url).netloc, str(options.issue), |
+ ['ALL_REVISIONS']) |
+ options.author = props['owner']['email'] |
+ for rev, rev_info in props['revisions'].iteritems(): |
+ if str(rev_info['_number']) == str(options.patchset): |
+ options.description = gerrit_util.GetChangeDescriptionFromGitiles( |
+ rev_info['fetch']['http']['url'], rev) |
+ break |
+ else: |
+ print >> sys.stderr, ('Patchset %d was not found in Gerrit issue %d' % |
+ options.patchset, options.issue) |
+ return 2 |
+ logging.info('Got author: "%s"', options.author) |
+ logging.info('Got description: """\n%s\n"""', options.description) |
+ |
try: |
with canned_check_filter(options.skip_canned): |
results = DoPresubmitChecks( |