我需要在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