@@ -69,6 +69,7 @@ def db_query(db, *args):
69
69
70
70
class Repository :
71
71
treeclosed = - 1
72
+ treecloesd_src = None
72
73
gh = None
73
74
label = None
74
75
db = None
@@ -79,17 +80,20 @@ def __init__(self, gh, repo_label, db):
79
80
self .db = db
80
81
db_query (
81
82
db ,
82
- 'SELECT treeclosed FROM repos WHERE repo = ?' ,
83
+ 'SELECT treeclosed, treeclosed_src FROM repos WHERE repo = ?' ,
83
84
[repo_label ]
84
85
)
85
86
row = db .fetchone ()
86
87
if row :
87
88
self .treeclosed = row [0 ]
89
+ self .treecloesd_src = row [1 ]
88
90
else :
89
91
self .treeclosed = - 1
92
+ self .treeclosed_src = None
90
93
91
- def update_treeclosed (self , value ):
94
+ def update_treeclosed (self , value , src ):
92
95
self .treeclosed = value
96
+ self .treeclosed_src = src
93
97
db_query (
94
98
self .db ,
95
99
'DELETE FROM repos where repo = ?' ,
@@ -98,8 +102,8 @@ def update_treeclosed(self, value):
98
102
if value > 0 :
99
103
db_query (
100
104
self .db ,
101
- 'INSERT INTO repos (repo, treeclosed) VALUES (?, ?)' ,
102
- [self .repo_label , value ]
105
+ 'INSERT INTO repos (repo, treeclosed, treeclosed_src ) VALUES (?, ?, ?)' ,
106
+ [self .repo_label , value , src ]
103
107
)
104
108
105
109
def __lt__ (self , other ):
@@ -340,8 +344,8 @@ def fake_merge(self, repo_cfg):
340
344
title = merged_prefix + title
341
345
issue .edit (title = title )
342
346
343
- def change_treeclosed (self , value ):
344
- self .repos [self .repo_label ].update_treeclosed (value )
347
+ def change_treeclosed (self , value , src ):
348
+ self .repos [self .repo_label ].update_treeclosed (value , src )
345
349
346
350
def blocked_by_closed_tree (self ):
347
351
treeclosed = self .repos [self .repo_label ].treeclosed
@@ -414,7 +418,7 @@ class LabelEvent(Enum):
414
418
415
419
416
420
def parse_commands (body , username , repo_label , repo_cfg , state , my_username ,
417
- db , states , * , realtime = False , sha = '' ):
421
+ db , states , * , realtime = False , sha = '' , command_src = '' ):
418
422
global global_cfg
419
423
state_changed = False
420
424
@@ -695,14 +699,14 @@ def parse_commands(body, username, repo_label, repo_cfg, state, my_username,
695
699
continue
696
700
try :
697
701
treeclosed = int (word [len ('treeclosed=' ):])
698
- state .change_treeclosed (treeclosed )
702
+ state .change_treeclosed (treeclosed , command_src )
699
703
except ValueError :
700
704
pass
701
705
state .save ()
702
706
elif word == 'treeclosed-' :
703
707
if not _reviewer_auth_verified ():
704
708
continue
705
- state .change_treeclosed (- 1 )
709
+ state .change_treeclosed (- 1 , None )
706
710
state .save ()
707
711
elif 'hooks' in global_cfg :
708
712
hook_found = False
@@ -1492,6 +1496,8 @@ def synchronize(repo_label, repo_cfg, logger, gh, states, repos, db, mergeable_q
1492
1496
db ,
1493
1497
states ,
1494
1498
sha = comment .original_commit_id ,
1499
+ command_src = comment .to_json ()['html_url' ],
1500
+ # FIXME switch to `comment.html_url` after updating github3 to 1.3.0+
1495
1501
)
1496
1502
1497
1503
for comment in pull .iter_issue_comments ():
@@ -1504,6 +1510,8 @@ def synchronize(repo_label, repo_cfg, logger, gh, states, repos, db, mergeable_q
1504
1510
my_username ,
1505
1511
db ,
1506
1512
states ,
1513
+ command_src = comment .to_json ()['html_url' ],
1514
+ # FIXME switch to `comment.html_url` after updating github3 to 1.3.0+
1507
1515
)
1508
1516
1509
1517
saved_state = saved_states .get (pull .number )
@@ -1629,8 +1637,16 @@ def main():
1629
1637
db_query (db , '''CREATE TABLE IF NOT EXISTS repos (
1630
1638
repo TEXT NOT NULL,
1631
1639
treeclosed INTEGER NOT NULL,
1640
+ treeclosed_src TEXT,
1632
1641
UNIQUE (repo)
1633
1642
)''' )
1643
+
1644
+ # manual DB migration :/
1645
+ try :
1646
+ db_query (db , 'SELECT treeclosed_src FROM repos LIMIT 0' )
1647
+ except sqlite3 .OperationalError :
1648
+ db_query (db , 'ALTER TABLE repos ADD COLUMN treeclosed_src TEXT' )
1649
+
1634
1650
for repo_label , repo_cfg in cfg ['repo' ].items ():
1635
1651
repo_cfgs [repo_label ] = repo_cfg
1636
1652
repo_labels [repo_cfg ['owner' ], repo_cfg ['name' ]] = repo_label
0 commit comments