Je ne vois pas une option à la caisse ou la liste des branches à distance/local dans ce moduleCommander/Liste des branches à distance dans git-python
http://gitorious.org/git-python/
Je ne vois pas une option à la caisse ou la liste des branches à distance/local dans ce moduleCommander/Liste des branches à distance dans git-python
http://gitorious.org/git-python/
Une fois que vous avez fait
from git import Git
g = Git()
(et éventuellement une autre commande pour initier g
vers le référentiel qui vous intéresse) toutes les demandes d'attribut sur g
sont plus ou moins transformées en un appel de git attr *args
.
Par conséquent:
g.checkout("mybranch")
devrait faire ce que vous voulez.
g.branch()
liste les branches. Cependant, notez qu'il s'agit de commandes de très bas niveau et qu'elles renverront le code exact que les exécutables git retourneront. Par conséquent, ne vous attendez pas à une belle liste. Je serai juste une chaîne de plusieurs lignes et avec une ligne ayant un astérisque comme premier caractère.
Il pourrait y avoir un meilleur moyen de le faire dans la bibliothèque. Dans repo.py
par exemple est une commande spéciale active_branch
. Vous devrez passer par la source un peu et chercher vous-même.
à la liste des branches que vous pouvez actuellement utiliser:
from git import Repo
r = Repo(your_repo_path)
repo_heads = r.heads # or it's alias: r.branches
r.heads
retours git.util.IterableList
(après list
hérite) de git.Head
objets, vous pouvez:
repo_heads_names = [h.name for h in repo_heads]
Et à la caisse par exemple. master
:
repo_heads['master'].checkout()
# you can get elements of IterableList through it_list['branch_name']
# or it_list.branch_name
Module mentionné dans la question est GitPython
qui moved de gitorious
à Github.
J'ai eu un problème similaire. Dans mon cas, je voulais seulement lister les branches distantes qui sont suivies localement. Cela a fonctionné pour moi:
import git
repo = git.Repo(repo_path)
branches = []
for r in repo.branches:
branches.append(r)
# check if a tracking branch exists
tb = t.tracking_branch()
if tb:
branches.append(tb)
Dans le cas où toutes les branches à distance sont nécessaires, je préférerais git directement:
def get_all_branches(path):
cmd = ['git', '-C', path, 'branch', '-a']
out = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
return out
Si vous avez déjà une instance Repo, vous pouvez appeler les commandes git directement comme: '' 'repo.git.branch ('- a')' '' – dusktreader
Juste pour le rendre évident - pour obtenir une liste des succursales à distance du courant répertoire repo:
import os, git
# Create repo for current directory
repo = git.Repo(os.getcwd())
# Run "git branch -r" and collect results into array
remote_branches = []
for ref in repo.git.branch('-r').split('\n'):
print ref
remote_branches.append(ref)
quand je lance r = Git.clone ("git ...") r.checkout ("développer") ne fonctionne pas .. AttributeError: 'caisse' objet 'str' n'a pas d'attribut – Mike
ok semble que je dois lancer ag = Git ("dir ") alors je peux commander – Mike
pourrait être. Je viens de cloner avec 'g' et ça a marché. – Debilski