#!/usr/bin/python # Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Gets information about one commit from gitiles. Example usage: ./fetch_revision_info.py 343b531d31 chromium ./fetch_revision_info.py 17b4e7450d v8 """ import argparse import json import urllib2 from bisect_lib import depot_map _GITILES_PADDING = ')]}\'\n' _URL_TEMPLATE = 'https://chromium.googlesource.com/%s/+/%s?format=json' def FetchRevisionInfo(commit_hash, depot_name): """Gets information about a chromium revision.""" path = depot_map.DEPOT_PATH_MAP[depot_name] url = _URL_TEMPLATE % (path, commit_hash) response = urllib2.urlopen(url).read() response_json = response[len(_GITILES_PADDING):] response_dict = json.loads(response_json) message = response_dict['message'].splitlines() subject = message[0] body = '\n'.join(message[1:]) result = { 'author': response_dict['author']['name'], 'email': response_dict['author']['email'], 'subject': subject, 'body': body, 'date': response_dict['committer']['time'], } return result def Main(): parser = argparse.ArgumentParser() parser.add_argument('commit_hash') parser.add_argument('depot', choices=list(depot_map.DEPOT_PATH_MAP)) args = parser.parse_args() revision_info = FetchRevisionInfo(args.commit_hash, args.depot) print json.dumps(revision_info) if __name__ == '__main__': Main()