1 | #!/usr/bin/env python
|
---|
2 | # -*- coding: utf-8 -*-
|
---|
3 |
|
---|
4 | from webkitpy.common.checkout.scm import default_scm
|
---|
5 | from webkitpy.common.checkout.checkout import Checkout
|
---|
6 | from webkitpy.common.system.executive import Executive
|
---|
7 | from webkitpy.common.net.bugzilla import Bugzilla
|
---|
8 | from xml.sax.saxutils import unescape
|
---|
9 | import sys
|
---|
10 | import os
|
---|
11 |
|
---|
12 | scm = default_scm()
|
---|
13 |
|
---|
14 | gtk_dirs = ['gtk', 'gobject', 'soup', 'cairo', 'gstreamer']
|
---|
15 | log_dirs = []
|
---|
16 | for root, dirs, dummy in os.walk(scm.checkout_root):
|
---|
17 | for d in dirs:
|
---|
18 | if d in gtk_dirs:
|
---|
19 | log_dirs.append(os.path.join(root, d))
|
---|
20 |
|
---|
21 | command = ['git', 'log', '--pretty=%H', sys.argv[1] + '..', '--']
|
---|
22 | command.extend (log_dirs)
|
---|
23 | revisions = Executive().run_command(command).splitlines()
|
---|
24 |
|
---|
25 | co = Checkout(scm)
|
---|
26 | bugs = {}
|
---|
27 | for rev in revisions:
|
---|
28 | info = co.commit_info_for_revision(scm.svn_revision_from_git_commit(rev))
|
---|
29 | if not info:
|
---|
30 | print "Error: no commit info found for git revision %s" % (rev)
|
---|
31 | continue
|
---|
32 | bug_id = info.bug_id()
|
---|
33 | if bug_id:
|
---|
34 | author_name = info.author_name()
|
---|
35 | authors = bugs.setdefault(bug_id, [])
|
---|
36 | if author_name not in authors:
|
---|
37 | authors.append(author_name)
|
---|
38 |
|
---|
39 | bugzilla = Bugzilla()
|
---|
40 | for bug_id in bugs:
|
---|
41 | try:
|
---|
42 | bug_title = bugzilla.fetch_bug_dictionary(bug_id)['title']
|
---|
43 | except:
|
---|
44 | print "Error getting info for bug #%s" % (bug_id)
|
---|
45 | continue
|
---|
46 | bug_title = unescape(bug_title, {"'": "'", """: '"'})
|
---|
47 | print u"Bug %s – %s (%s)" % (bug_id, bug_title, ", ".join (bugs[bug_id]))
|
---|