GitPython:获取远程仓库的最新标签

5
我希望能够检查给定repo的最新标签(这里以CPython为例)。 以下方法有效:
g = git.cmd.Git()
blob = g.ls_remote('https://github.com/python/cpython', sort='-v:refname', tags=True)
blob.split('\n')[0].split('/')[-1]  # 'v3.9.0a6'

因为这个 blob 看起来像这样:

'bc1c8af8ef2563802767404c78c8ec6d6a967897\trefs/tags/v3.9.0a6\ndcd4 (...)'

但是:有没有更简洁的方法来获取最新的标签?

最好使用gitpython,但其他任何软件包也可以。


没有克隆:我不这么认为。 git ls-remote 是我知道的唯一一个在没有克隆的情况下获取存储在远程的信息的命令。我打算投票关闭这个问题,因为你似乎已经有了一个不错的解决方案,“更干净的方式”显然是非常主观的。 - LeGEC
我投票关闭该问题,因为 OP 提供的解决方案在我看来已经足够干净了,“更干净”是非常主观的。 - LeGEC
“Cleaner”确实是主观的,但我的意思是:由gitpython或任何其他库支持,以便它经过充分测试并得到社区支持,比解析更稳定。我的解决方案大致如下:“哦,我想我在那个字符串中看到了标签,我只需尝试提取它。”我没有验证它在以前的git版本中如何工作,或者它将来是否会得到支持--这是一个库做得更好的事情。 这有意义吗? - ponadto
你的问题确实有意义。我只是认为你已经找到了一个足够清晰的答案。 - LeGEC
1
也许你可以向 gitpython 贡献你的解决方案,以便由社区进行测试和支持? - mkrieger1
我已经创建了一个问题:https://github.com/gitpython-developers/GitPython/issues/1071,如果回复是肯定的,我将创建一个PR。 - ponadto
1个回答

1

git ls-remote是Git套件中稳定且有文档记录的命令,因此解析其输出已经是一种有效且稳定的获取所需信息的方式。
(我挖出了一个发布说明,它指定在版本1.5.4(2007-2008年间发布)中将其重写为C语言,这意味着它在以前的版本中已经存在作为脚本的形式)

据我所知,目前还没有Python封装程序可以通过Python方法找到所述引用的存在或值,但实现这些方法的方式看起来与您自己编写的方式非常相似。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接