我正在尝试使用GitPython库在回购中获取最新的标记。通常我是这样做的:
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,我知道如何解决这个问题,而不是使用回购对象。但是,也许有人知道我在这个库中获得排序标签列表时遗漏了什么)
自定义排序函数也是一种选择,但我仍然不知道是否有一种使用GitPython的方法?
发布于 2014-08-11 20:32:18
我刚看了一下,发现了负责排序的代码。因此,我没有别的办法,只能自己颠倒排序顺序,就像
reversed(repo.tags)如果首选,还可以使用底层的git命令,并自己解析结果,如本例中所示:
repo.git.tag(l=True) # equals git tag -l这样,无论git tag能做什么,您都可以这样做(从给定的提交开始,按照遍历顺序列出标记可能很有趣)。
发布于 2017-02-14 12:17:20
repo.tags在GitPython中返回的GitPython对象扩展了list Python类,这意味着您可以按照需要对其进行排序。要创建最新的标记,只需执行以下操作:
import git
repo = git.Repo('path/to/repo')
tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)
latest_tag = tags[-1]发布于 2017-07-11 10:12:04
如果与标记有不同的提交(通常是这样的),那么上面的内容就会起作用。然而,一种更准确的方法是如下所示,即提取标记日期:
import git
repo = git.Repo('path/to/repo')
tags = sorted(repo.tags, key=lambda t: t.tag.tagged_date)
latest_tag = tags[-1]https://stackoverflow.com/questions/25056478
复制相似问题