1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#!/usr/bin/env python3
from __future__ import print_function
import json
import os
import requests
from subprocess import call
import sys
import time
try:
from urllib.parse import urljoin
except:
from urlparse import urljoin
label = sys.argv[1]
repo = "ceph/ceph"
with open(os.environ['HOME'] + '/.github_token', 'r') as myfile:
token = myfile.readline().strip()
# get prs
baseurl = urljoin('https://api.github.com', (
'repos/{repo}/issues?labels={label}'
'&access_token={token}'
'&sort=created'
'&direction=asc'
)
)
url = baseurl.format(
label=label,
repo=repo,
token=token)
r = requests.get(url)
assert(r.ok)
j = json.loads(r.text or r.content)
print("--- found %d issues tagged with %s" % (len(j), label))
prs = []
prtext = []
for issue in j:
if 'pull_request' not in issue:
continue
r = requests.get(issue['pull_request']['url'] + '?access_token=' + token)
pr = json.loads(r.text or r.content)
prs.append(pr)
prtext.append(pr['html_url'] + ' - ' + pr['title'])
print("--- queried %s prs" % len(prs))
# name branch
TIME_FORMAT = '%Y-%m-%d-%H%M'
branch = label + "-" + time.strftime(TIME_FORMAT, time.localtime())
print("branch %s" % branch)
# assemble
print('--- creating branch %s' % branch)
r = call(['git', 'checkout', '-b', branch])
assert not r
for pr in prs:
print('--- pr %d --- pulling %s branch %s' % (
pr['number'],
pr['head']['repo']['clone_url'],
pr['head']['ref']))
r = call(['git', 'pull', '--no-edit',
pr['head']['repo']['clone_url'],
pr['head']['ref']])
assert not r
print('--- done. these PRs were included:')
print('\n'.join(prtext).encode('ascii', errors='ignore').decode())
print('--- perhaps you want to: make && ctest -j12 && git push ci %s' % branch)
|