-
Notifications
You must be signed in to change notification settings - Fork 0
/
migrate.py
73 lines (55 loc) · 2.44 KB
/
migrate.py
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
71
72
73
from common import getLimits, done
from config import SOURCE_REPO, TARGET_REPO
import issues, labels, milestones, comments
getLimits()
src_repo_labels = labels.read(SOURCE_REPO)
tgt_repo_labels = labels.read(TARGET_REPO)
# delete the labels in target repo
for key in tgt_repo_labels.keys():
labels.delete(TARGET_REPO, key)
# create the lables in target repo
for key in src_repo_labels.keys():
labels.create(TARGET_REPO, key, src_repo_labels[key][key])
#print key, tgt_repo_labels[key][key]
###################################################
src_milestones = milestones.read(SOURCE_REPO)
# create the milestones in target
milestone_map={}
for key in src_milestones.keys():
new_milestone_no = milestones.create(TARGET_REPO, key, src_milestones[key][key][0])
milestone_map[src_milestones[key][key][1]] = new_milestone_no
# print TARGET_REPO, key, src_milestones[key][key][0]
print milestone_map
###################################################
# create the issues in target
def create_issues(issue_list, milestone_no_map, issue_status="open"):
i = 0
limit = len(issue_list)
while i < limit:
issue = issue_list[i]
no_of_comments = issue['comments']
issue_id = issue['id']
del issue['comments']
del issue['id']
if issue.has_key('milestone'):
issue['milestone'] = milestone_no_map[issue['milestone']]
new_issue_id = issues.create(TARGET_REPO, issue)
# does the issue have comments? if so create them.
if no_of_comments > 0:
comments_list = sorted(comments.read(SOURCE_REPO, issue_id), key=lambda k: k['id'])
j = 0
while j < no_of_comments:
comment= comments_list[j]["comment"]
comments.create(TARGET_REPO, new_issue_id, comment)
j+=1
if issue_status == "closed":
modified_issue = {"state":"closed"}
issues.edit(TARGET_REPO, new_issue_id, modified_issue)
i+=1
print "########################################## \ncreating open issues"
src_repo_open_issue_list = issues.read(SOURCE_REPO)
create_issues(src_repo_open_issue_list, milestone_map)
print "########################################## \ncreating closed issues"
src_repo_closed_issue_list = issues.read(SOURCE_REPO,"closed")
create_issues(src_repo_closed_issue_list, milestone_map, "closed")
done()