Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: experimental/bisect_lib/chromium_revisions.py

Issue 1521503002: Update bisect_lib with the changes committed in the infra/build repo. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import json
6 import urllib2
7
8 BASE_URL = 'https://chromium.googlesource.com/chromium/src/+'
9 PADDING = ')]}\'\n' # Gitiles padding.
10
11 def revision_info(revision):
12 """Gets information about a chromium revision.
13
14 Args:
15 revision (str): The git commit hash of the revision to check.
16
17 Returns:
18 A dictionary containing the author, email, 'subject' (the first line of the
19 commit message) the 'body' (the whole message) and the date in string format
20 like "Sat Oct 24 00:33:21 2015".
21 """
22
23 url = '%s/%s?format=json' % (BASE_URL, revision)
24 response = urllib2.urlopen(url).read()
25 response = json.loads(response[len(PADDING):])
26 message = response['message'].splitlines()
27 subject = message[0]
28 body = '\n'.join(message[1:])
29 result = {
30 'author': response['author']['name'],
31 'email': response['author']['email'],
32 'subject': subject,
33 'body': body,
34 'date': response['committer']['time'],
35 }
36 return result
37
38
39 def revision_range(first_revision, last_revision):
40 """Gets the revisions in chromium between first and last including the latter.
41
42 Args:
43 first_revision (str): The git commit of the first revision in the range.
44 last_revision (str): The git commit of the last revision in the range.
45
46 Returns:
47 A list of dictionaries, one for each revision after the first revision up to
48 and including the last revision. For each revision, its dictionary will
49 contain information about the author and the comitter and the commit itself
50 analogously to the 'git log' command. See test_data/MOCK_RANGE_RESPONSE_FILE
51 for an example.
52 """
53 url = '%slog/%s..%s?format=json' % (BASE_URL, first_revision, last_revision)
54 response = urllib2.urlopen(url).read()
55 response = json.loads(response[len(PADDING):])
56 return response['log']
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698