当我有一个带有轻量级和带注释标签的存储库时,git-for-each-ref
似乎只对其中一个集合进行排序。我想修改我对 for-each-ref
的调用以获取对所有标签进行排序并将它们混合在输出中的输出。
例如:
bash-3.2$ git 标签 |
> xargs -I T git log -n 1 --format='%at T' T |
> 排序 -rn |
> awk '{print $2}'
重量3
在 3
重量2
在 2
重量1
在 1
bash-3.2$ git for-each-ref --sort=-authordate refs/tags | awk '{print $3}'
引用文献/标签/lwt3
引用文献/标签/lwt2
引用文献/标签/lwt1
引用文献/标签/at1
引用文献/标签/at2
引用文献/标签/at3
bash-3.2$ git --version
git 版本 1.6.6.80.g2df32
使用 -committerdate
或 -taggerdate
会生成类似的输出,并且标签永远不会正确排序。使用 -*authordate
或 -*committerdate
时,排序的组是倒置的,而 -*taggerdate
不排序。
还有其他一些我不知道的选择吗?这是正确的行为吗?我可以理解为什么 committerdate 或 taggerdate 只会分别对提交或标签进行排序,但似乎 authordate 应该做我想做的事。
最佳答案
好的,继续验证我在评论中所说的话:
只有带注释的标签会在存储库中创建一个选项卡对象,其中包含您尝试在此处排序的 taggerdate 字段。您的标签很可能是轻量级标签,因此不包含此类信息。
而对于另一半, committerdate 和 authordate 似乎对我来说在标签上工作正常——它们只是对标签指向的提交进行排序,因为没有关于标签本身何时创建的信息。 (并且当且仅当您将 - 放在前面时,它们才会反转排序)
关于git - 为什么 git-for-each-ref 无法正确排序标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2021599/