`git ls-remote` in GitPython

好久不见. 提交于 2019-12-01 05:36:10

问题


In my python program, I want to check whether a ref exists on my remote. I can check the remote with git ls-remote, but I would like to avoid parsing the output myself.

I found git.remote.Remote in GitPython, but that only refers to a remote of a local repository.

Does GitPython have an equivalent command which allows me to look at remote refs without cloning the repository?


回答1:


GitPython does not support ls-remote, but you can use git.cmd to run any git command and then parse the output manually:

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

Example:

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


来源:https://stackoverflow.com/questions/35585236/git-ls-remote-in-gitpython

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!