如何从gerrit获取审核周期信息?

时间:2017-01-13 19:39:11

标签: gerrit

我试图获得一些数据,说明评论平均需要多长时间才能通过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,但我找不到存储提交信息的表。

1 个答案:

答案 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 YYYYXXXX 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处于草稿模式的任何时间。如果我开始排除那个时间,我会编辑这个问题。