2017-01-13 6 views
1

私は、レビューが平均してGerritを通過するのにかかる時間に関するデータを取得しようとしています。gerritからレビューサイクル期間情報を取得するにはどうすればよいですか?

いくつかのオープンソースコードを見ると、私は

reviewCreateTime = moment(mergedReviewsList[review].created); 
reviewUpdateTime = moment(mergedReviewsList[review].updated); 
interval = reviewUpdateTime.diff(reviewCreateTime, TIME_PERIOD_TYPE); 

ようなものを参照してくださいしかし、実験で、私は、マージされたCRにコメントを追加すると、更新されたタイムスタンプが変更されるため、このロジックが正しいとは思いません。

マージ時に、GerritがUI Change has been successfully merged by XXXに印刷するので、これは可能です。

私はmysqlデータベースを掘り下げてきましたが、役に立たないものは見つかりませんでした。送信された変更にはsubmission_idがありますが、投稿情報が格納されているテーブルが見つかりませんでした。

答えて

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がドラフトモードにあったときはいつでも含まれます。私はその時間を除外するようになったらこの質問を編集します。

関連する問題