首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitPython标签排序

GitPython标签排序
EN

Stack Overflow用户
提问于 2014-07-31 10:22:48
回答 4查看 16.1K关注 0票数 20

我正在尝试使用GitPython库在回购中获取最新的标记。通常我是这样做的:

代码语言:javascript
复制
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的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-11 20:32:18

我刚看了一下,发现了负责排序的代码。因此,我没有别的办法,只能自己颠倒排序顺序,就像

代码语言:javascript
复制
reversed(repo.tags)

如果首选,还可以使用底层的git命令,并自己解析结果,如本例中所示:

代码语言:javascript
复制
repo.git.tag(l=True) # equals git tag -l

这样,无论git tag能做什么,您都可以这样做(从给定的提交开始,按照遍历顺序列出标记可能很有趣)。

票数 5
EN

Stack Overflow用户

发布于 2017-02-14 12:17:20

repo.tags在GitPython中返回的GitPython对象扩展了list Python类,这意味着您可以按照需要对其进行排序。要创建最新的标记,只需执行以下操作:

代码语言:javascript
复制
import git
repo = git.Repo('path/to/repo')
tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)
latest_tag = tags[-1]
票数 26
EN

Stack Overflow用户

发布于 2017-07-11 10:12:04

如果与标记有不同的提交(通常是这样的),那么上面的内容就会起作用。然而,一种更准确的方法是如下所示,即提取标记日期:

代码语言:javascript
复制
import git
repo = git.Repo('path/to/repo')
tags = sorted(repo.tags, key=lambda t: t.tag.tagged_date)
latest_tag = tags[-1]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25056478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档