| Index: experimental/bisect_lib/fetch_revision_info.py
|
| diff --git a/experimental/bisect_lib/fetch_revision_info.py b/experimental/bisect_lib/fetch_revision_info.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..ca7e76848213ec54d1d44b00f175c0085a622a55
|
| --- /dev/null
|
| +++ b/experimental/bisect_lib/fetch_revision_info.py
|
| @@ -0,0 +1,52 @@
|
| +#!/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
|
| +
|
| +import depot_map # pylint: disable=relative-import
|
| +
|
| +_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()
|
|
|