使用Github API高效获取给定日期内所有提交及其分支的方法

3
我正在尝试获取特定日期存储库上的所有提交。我还想知道每个提交所在的分支。
我希望使用Github API高效地获取这些信息。
目前,我正在获取存储库的所有分支,然后对该分支上的所有提交进行分页,并在内存中过滤某个日期的提交。显然,如果有很多分支/提交,这会变得非常低效。
有什么好的想法吗?
1个回答

1
Git提交不在任何分支上,Git也不跟踪提交首次创建的分支。分支是指向提交的指针,较早的提交可能可通过分支到达。
GitHub的API允许您使用sinceuntil参数按日期列出提交记录,但我没有看到任何获取包含提交的分支信息的方法。
如果您有一个有趣的提交,您可以使用git branch --contains <hash>在命令行中查看当前包含它的分支,但这与创建提交时处于活动状态的分支不同。
像这样的Bash循环应该可以让您接近所需的内容:
for COMMIT in $(git log \
                    --since '2014-02-25' \
                    --until '2014-02-27' \
                    --pretty=format:'%h'); do

    echo $COMMIT && git branch --contains $COMMIT;
done

输出应该类似于这样:
abcd123
* master
  develop
1234abc
  develop
1234567
* master

在运行之前,您只需要更新本地副本即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接