排序的GitPython标签

2022-02-24 00:00:00 python git sorting tags 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

问题是如何使用GitPython获取最新的标记?(我知道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能做什么,您都可以做(从给定的提交开始,按照遍历顺序列出标记可能会很有趣)。

相关文章