我试图获得一些数据,说明评论平均需要多长时间才能通过Gerrit。
看一些开源代码,我看到像
这样的东西reviewCreateTime = moment(mergedReviewsList[review].created);
reviewUpdateTime = moment(mergedReviewsList[review].updated);
interval = reviewUpdateTime.diff(reviewCreateTime, TIME_PERIOD_TYPE);
但是通过实验,我不认为这种逻辑是正确的,因为向合并的CR添加注释会更改更新的时间戳。
我知道这是可能的,因为在合并时,Gerrit会打印到用户界面Change has been successfully merged by XXX
。
我一直在mysql数据库中挖掘但是没有找到任何有用的东西。我注意到已提交的更改有一个submission_id,但我找不到存储提交信息的表。
答案 0 :(得分:2)
经过一番挖掘后,我想出了一个相当丑陋但可行的解决方案。
有一个表change_messages
mysql> describe change_messages;
+-----------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-------------+------+-----+---------+-------+
| author_id | int(11) | YES | | NULL | |
| written_on | timestamp | NO | | NULL | |
| message | text | YES | | NULL | |
| patchset_change_id | int(11) | YES | MUL | NULL | |
| patchset_patch_set_id | int(11) | YES | | NULL | |
| change_id | int(11) | NO | PRI | 0 | |
| uuid | varchar(40) | NO | PRI | | |
+-----------------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
这基本上存储了XXXX has been successfully merged by YYYY
和XXXX has been successfully cherry-picked as YYYY by ZZZZ
等内容。
然后,您可以将此表与change_messages.written_on和changes.created_on上的更改和约会进行关联,例如
SELECT changes.change_id,
created_on,
written_on,
Datediff(written_on, created_on) diff
FROM change_messages
INNER JOIN changes
ON change_messages.change_id = changes.change_id
WHERE message LIKE 'Change has been successfully merged by %'
ORDER BY written_on;
现在,这包括CR处于草稿模式的任何时间。如果我开始排除那个时间,我会编辑这个问题。