GitPython中的`git ls-remote`

时间:2016-02-23 18:21:53

标签: python git gitpython

在我的python程序中,我想检查我的遥控器上是否存在ref。我可以使用git ls-remote检查远程,但我想避免自己解析输出。

我在GitPython中找到了git.remote.Remote,但这只是指本地存储库的远程。

GitPython是否有一个等效命令,允许我在不克隆存储库的情况下查看远程引用?

3 个答案:

答案 0 :(得分:12)

GitPython不支持ls-remote,但您可以使用git.cmd运行任何git命令,然后手动解析输出:

import git
def lsremote(url):
    remote_refs = {}
    g = git.cmd.Git()
    for ref in g.ls_remote(url).split('\n'):
        hash_ref_list = ref.split('\t')
        remote_refs[hash_ref_list[1]] = hash_ref_list[0]
    return remote_refs

示例:

In [3]: refs = lsremote('https://github.com/gitpython-developers/GitPython.git')
In [4]: refs['HEAD']
Out[4]: u'9f4af7c6db25c5bbec7fdc8dfc0ea6803350d94c'

答案 1 :(得分:2)

没有克隆的情况:

scanf

我为您保留了输出解析,但是我有一些示例

import git

url = "git://github.com/git/git.git"
g = git.cmd.Git()
g.ls_remote("--tags", url).split('\n')

答案 2 :(得分:0)

这也可以。

from git import Repo
repo = Repo('path to source')
repo.git.ls_remote("--heads", "origin", "release/10.0.0.2")

输出将类似于:

'9e5ca005c2d320a4904e88e25df1efa6fb26b396 \ trefs / heads / release / 10.0.0.2'