No meu programa python, quero verificar se existe uma referência no meu controle remoto. Eu posso verificar o controle remoto com git ls-remote
, mas eu gostaria de evitar analisar a saída sozinho.
eu encontrei git.remote.Remote
dentro GitPython
, mas isso se refere apenas a um controle remoto de um repositório local.
Faz GitPython
tenho um comando equivalente que me permite olhar para refs remotas sem clonar o repositório?
Respostas:
8 para resposta № 1GitPython
não suporta ls-remote
, mas você pode usar git.cmd
para executar qualquer comando git e depois analisar manualmente a saída:
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
Exemplo:
In [3]: refs = lsremote("https://github.com/gitpython-developers/GitPython.git")
In [4]: refs["HEAD"]
Out[4]: u"9f4af7c6db25c5bbec7fdc8dfc0ea6803350d94c"