使用git rev-list打印分支名称

时间:2017-11-27 16:36:11

标签: git

我正在编写一个脚本,我需要在回购邮件中添加分页分支列表。

我能找到的唯一git命令可以处理带有--max-count--skip参数的引用,它们是分页结果的基本组成部分,是rev-list 。但我找不到与refname的{​​{1}}参数相同的--format

这就是我想要做的事情,但改为使用rev-list

git for-each-ref

不幸的是,git for-each-ref --sort=-committerdate refs/heads/ \ --format='%(refname:short) %(objectname:short)' git for-each-ref都没有git branch的分页(只有--skip),所以这对我的分页脚本没有好处。

我也试图用一个命令来做这件事。使用嵌套/管道命令会产生性能损失,我不愿意这样做,因为这将针对一长串历史分支运行并需要通过页面进行处理。但我愿意接受建议。

1 个答案:

答案 0 :(得分:1)

每个ref都指向一个且只有一个提交,这就是为什么可以使for-each-ref对提交属性起作用的原因。

但反过来却不是这样。有些提交没有refs指向它们。一些提交有许多引用指向它们。因此,要求rev-list对ref(例如分支)属性采取行动本质上是不明确的。

我认为最好的办法是运行for-each-ref一次,将输出捕获到一组预先分页的文件中。是的,创建文件的初始运行将涉及管道进程(git for-each-ref通过管道传输到为每个页面拆分文件的脚本;但是对于单个页面的请求实际上会更快,因为他们甚至不必调用git。