2016-02-23 2 views
2

Dans mon programme python, je veux vérifier si une référence existe sur ma télécommande. Je peux vérifier la télécommande avec git ls-remote, mais je voudrais éviter d'analyser la sortie moi-même.`git ls-remote` dans GitPython

J'ai trouvé git.remote.Remote dans GitPython, mais cela ne fait référence qu'à une télécommande d'un référentiel local.

Est-ce que GitPython a une commande équivalente qui me permet de regarder des références distantes sans cloner le dépôt?

Répondre

6

GitPython ne supporte pas ls-remote, mais vous pouvez utiliser git.cmd pour exécuter une commande git puis analyser la sortie manuellement:

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 

Exemple:

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