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?
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'