我正在编写一个脚本,我需要在回购邮件中添加分页分支列表。
我能找到的唯一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
),所以这对我的分页脚本没有好处。
我也试图用一个命令来做这件事。使用嵌套/管道命令会产生性能损失,我不愿意这样做,因为这将针对一长串历史分支运行并需要通过页面进行处理。但我愿意接受建议。
答案 0 :(得分:1)
每个ref都指向一个且只有一个提交,这就是为什么可以使for-each-ref
对提交属性起作用的原因。
但反过来却不是这样。有些提交没有refs指向它们。一些提交有许多引用指向它们。因此,要求rev-list
对ref(例如分支)属性采取行动本质上是不明确的。
我认为最好的办法是运行for-each-ref
一次,将输出捕获到一组预先分页的文件中。是的,创建文件的初始运行将涉及管道进程(git for-each-ref
通过管道传输到为每个页面拆分文件的脚本;但是对于单个页面的请求实际上会更快,因为他们甚至不必调用git。