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

时间:2018-07-17 08:13:16

标签: git jenkins

我需要在Jenkins中设置参数化作业,该作业将从多个存储库中检索提交历史记录,从特定日期范围内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日开始从回购中检索所有提交,例如,使用“ git log --since =” 2015-12-01“”。但是无法弄清楚如何从FROM和TO(某个时间范围)日期中检索所有日志。 (已解决)使用:

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

UPD2。另外,有人可以提示我,如何从“测试”开始从某个存储库的组织列表中检索吗?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  • 致电Github search API,以在组织内寻找名称,说明或自述文件中与test相匹配的回购邮件
  • 仅解析名称以test开头的json和过滤器回购
  • 对于每个用户,从clone_url字段中克隆存储库
  • 对于每个目录,执行git log

以下示例使用

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