Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitPython:获取远程回购的最新标记_Python_Git_Git Tag_Gitpython - Fatal编程技术网

GitPython:获取远程回购的最新标记

GitPython:获取远程回购的最新标记,python,git,git-tag,gitpython,Python,Git,Git Tag,Gitpython,我希望能够检查给定回购协议的最新标签(我在这里使用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看起来像这样: 'bc1c8af8ef2563802767404c78c8ec6d6a967

我希望能够检查给定回购协议的最新标签(我在这里使用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
是git套件的一个稳定且有文档记录的命令,因此解析其输出已经是获取所需信息的有效且稳定的方法。
(我找到了一个发行说明,其中指定is在版本(2007-2008年发布的某个地方)中用C重写,这意味着它在以前的版本中已经作为脚本存在)


顺便说一句,目前还没有一个python包装器可以通过python方法找到所述引用的存在或价值,但是所述方法的实现看起来很像您自己编写的。

没有克隆:我不这么认为
git ls remote
是我所知道的唯一一个不用克隆就能获取远程设备上存储的信息的命令。我将投票结束这个问题,因为你似乎已经有了一个体面的解决方案,“更干净的方式”显然是非常主观的。我投票结束这个问题是因为OP提供的解决方案足够干净,“更干净”是非常主观的。“更干净”确实是主观的,但我的意思是:由
gitpython
或任何其他库支持,这样它就得到了社区的良好测试和支持,并且比解析更稳定。我的解决方案是这样的:“哦,我想我看到了字符串中的标记,我会尝试提取它”。我没有验证它在以前的git版本中是如何工作的,也没有验证它在将来是否会得到支持——这是一个库可以做得更好的事情。这有道理吗?你的问题肯定有道理。我只是觉得你已经找到了一个足够清晰的答案。也许你可以将你的解决方案贡献给
gitpython
,以便社区对它进行测试和支持?