如何跟踪GitHub上的拉取请求已打开多长时间?

时间:2019-04-26 05:53:13

标签: git github

我们使用GitHub Enterprise作为内部代码库。我们跨团队面临的一个常见问题是“拉动请求审核的周转时间”有时可能是几个“物理天”(很多理想的时间)。

我们正在调整一些工程实践,以防止PR不必要地变大,并允许更快的审阅时间。但是,我找不到任何有助于准确跟踪PR合并之前打开的时间的信息。

我们想使用客观指标来验证我们的一些方法,以查看我们是否对审查时间做出了有意义的改变,并且“直到合并的开放PR持续时间”是要跟踪的重要指标。

git / GitHub有什么可以帮助获得此类指标的东西吗?我试着看,但是什么都没出现。

2 个答案:

答案 0 :(得分:2)

GitHub的graphQL API可以帮助您获取请求请求元数据,例如PR的创建时间(createdAt)和合并的时间(mergedAt)https://developer.github.com/v4/object/pullrequest/ 您可以使用搜索查询https://developer.github.com/v4/query/#connections搜索所有提取请求,然后计算合并时间。

此外,您可能对该工具https://github.com/change-metrics/monocle感兴趣,因为它为GitHub存储库提供了请求请求指标。在其他各种指标中,该工具计算“平均合并时间”指标。借助您可以设置的过滤器,您可以获得平均的时间来合并整个GitHub组织,特定存储库,开发人员或一组开发人员。

答案 1 :(得分:1)

您可以使用Github Rest Api来获取详细信息。我添加了带有示例存储库的示例。我认为对于企业版,您必须使用令牌(https://github.com/settings/tokens)访问回购信息。在这种情况下,请求uri将为

https://api.github.com/repos/srajagop/page-test/pulls?token=xxxxxxxxxxxxxxxxx

例如

async function timeElapsed(){
   let response = await fetch('https://api.github.com/repos/srajagop/page-test/pulls');
   let jsonData = await response.json();
   let diff = new Date().getTime() - new Date(Date.parse('2019-04-26T05:56:33Z')).getTime();
   let hoursElapsed = Math.ceil(diff / (1000 * 60 * 60)); 
   return hoursElapsed;
}
timeElapsed().then(data => console.log("Hours elapsed", data));