#!/usr/bin/env python # Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Downloads a patch and changed files from Rietveld. Prints the patch of the most recent patchset to stdout. """ try: import base64 import fix_encoding import gerrit_util import git_cl import optparse import os.path # import StringIO import sys import tarfile #import urllib2 from third_party import colorama except ImportError as e: print(e) print('Perhaps you\'re missing depot_tools in your PYTHONPATH.') import sys sys.exit(1) def Progress(message): print(message, file=sys.stderr) def DieWithError(message): print(message, file=sys.stderr) sys.exit(1) def main(argv): parser = optparse.OptionParser() parser.set_usage('%prog [options] issue_number') parser.description = __doc__.strip() options, args = parser.parse_args(argv) if len(args) != 1: parser.print_help() return 0 change_id = "" try: issue = int(args[0]) except ValueError: try: change_id = str(args[0]) except ValueError: DieWithError('Invalid issue number or change id') if not change_id: HOST_ = "chromium-review.googlesource.com" change_id = gerrit_util.GetChange(HOST_, issue)["change_id"] else: HOST_ = "googleplex-android-review.git.corp.google.com" query = gerrit_util.GetChangeCurrentRevision(HOST_, change_id)[0] current_revision_id = query["current_revision"] current_revision = query["revisions"][current_revision_id] patchset = current_revision["_number"] ref = current_revision["ref"] # Fetch the current branch. Progress("Fetching... " + ref) git_cl.RunGit( ["fetch", "https://chromium.googlesource.com/chromium/src", ref]) print('Issue: %d, patchset: %d\n' % (issue, patchset)) print() print(git_cl.RunGit(["show", "FETCH_HEAD"])) git_cl.RunGit(["checkout", "FETCH_HEAD"]) Progress("finished") Progress("Run git checkout FETCH_HEAD, to start reviewing.") if __name__ == '__main__': # These affect sys.stdout so do it outside of main() to simplify mocks in # unit testing. fix_encoding.fix_encoding() colorama.init() sys.exit(main(sys.argv[1:]))