从多个存储库获取一段时间的提交历史记录



我需要在Jenkins中设置参数化作业,它将从多个repo中检索提交历史记录,从特定日期范围内它们名称中的test*开始(将在Jenkins参数中设置(。输出类似:

testQDevices
Branch development
commit MQP-1896 somenewfeatures
Branch qa
commit MQP-1836 somenewfixes
testQAPIs
Branch development
commit MQP-1996 somenewfeatures
Branch qa
commit MQP-1939 somenewfixes

你能告诉我,哪些git命令可以检索这样或类似的输出吗?

UPD1.我知道,从2015年12月1日起,我可以从repo中检索所有提交,例如,使用"git log--since="2015-12-01"。但无法弄清楚如何检索所有日志FROM和to(某个时间范围(日期。(已解决(使用:

git log --oneline --before 2018-07-1 --after 2018-06-10

UPD2.此外,有人能告诉我,如何从"测试"开始从一些组织的存储库列表中检索吗?

您可以执行以下操作:

  • 调用Github搜索API,在组织内部查找名称、描述或自述中与test匹配的回购
  • 解析json&仅筛选名称以test开头的repo
  • 对于它们中的每一个,从clone_url字段克隆repo
  • 对于每个目录,执行git log

以下示例使用curl、jq、xargs&bash:

curl -s "https://api.github.com/search/repositories?q=org%3Agoogle%20test&per_page=100" | 
jq -r '.items[] | select(.name | startswith("test")) | .clone_url' | 
xargs -I{} git clone {}
for d in */; 
do 
( cd $d && 
echo "repo ${d::-1}" && 
echo "branch $(git rev-parse --abbrev-ref HEAD)" && 
git --no-pager log --oneline --before 2018-07-1 --after 2012-06-10; )
done

最新更新