排序的GitPython标签
问题描述
我正在尝试使用GitPython库获取repo中的最新标记。通常我是这样做的:
repo = Repo(project_root)
last_tag = str(repo.tags[-1])
但是一旦发布版本1.10,我总是得到1.9;(我知道这与输出git tag -l
列出的顺序相同有关。因此它将是1.1, 1.10, 1.2, ..., 1.9
git tag -l | sort -V
,我知道不使用repo对象如何解决这个问题。但可能有人知道我在此库中获取排序标签列表时遗漏了什么)
自定义排序功能也一直是一个选项,但是我想知道有没有办法用GitPython来做到这一点?
解决方案
我刚刚看了一下,找到了code responsible for the sorting。因此,我别无选择,只能自己颠倒排序顺序,如
reversed(repo.tags)
如果愿意,您也可以使用底层的git命令,自己解析结果,如下例所示:
repo.git.tag(l=True) # equals git tag -l
这样,无论git tag
能做什么,您都可以做(从给定的提交开始,按照遍历顺序列出标记可能会很有趣)。
相关文章