The time it takes from when a PR is issued to when it is merged. Essentially, PR Time to Merge = PR Pickup Time + PR Review Time.
The delay of reviewing and waiting to review PRs has large impact on delivery speed, while reasonably short PR Time to Merge can indicate frictionless teamwork. Improving on this metric is the key to reduce PR cycle time.
Data Sources Required
This metric relies on PRs/MRs collected from GitHub, GitLab, BitBucket, Gitee or other code review tools.
Data Transformation Required
N/A
SQL Queries
The following SQL shows how to find the mean time to merge of PRs
in specific repositories and given time range.
SELECT avg(TIMESTAMPDIFF(Minute,created_date,merged_date)/1440) FROM pull_requests WHERE -- $__timeFilter will take Grafana's time range $__timeFilter(created_date) -- please replace the repo ids with your own, or create a '$repo_id' variable in Grafana and base_repo_id in ('repo_1', 'repo_2') and merged_date is not null
If you want to measure the monthly trend of PR time to merge
in the screenshot below, please run the following SQL in Grafana.
with _prs as( SELECT DATE_ADD(date(created_date), INTERVAL -DAY(date(created_date))+1 DAY) as time, avg(TIMESTAMPDIFF(Minute,created_date,merged_date)/1440) as time_to_merge FROM pull_requests WHERE $__timeFilter(created_date) -- the following condition will remove the month with incomplete data and created_date >= DATE_ADD(DATE_ADD($__timeFrom(), INTERVAL -DAY($__timeFrom())+1 DAY), INTERVAL +1 MONTH) -- please replace the repo ids with your own, or create a '$repo_id' variable in Grafana and base_repo_id in ('repo_1', 'repo_2') GROUP BY 1 ) SELECT date_format(time,'%M %Y') as month, time_to_merge as "Time to Merge" FROM _prs ORDER BY time