145 votes

Méthode Python pour cloner un dépôt git

Existe-t-il une méthode Python sans utiliser de sous-processus pour cloner un dépôt git ? Je suis prêt à utiliser n'importe quel type de modules que vous recommandez.

30voto

Manje Points 361

Ma solution est très simple et directe. Il n'a même pas besoin de la saisie manuelle de la phrase de passe/mot de passe.

Voici mon code complet :

import sys
import os

path  = "/path/to/store/your/cloned/project" 
clone = "git clone gitolite@<server_ip>:/your/project/name.git" 

os.system("sshpass -p your_password ssh user_name@your_localhost")
os.chdir(path) # Specifying the path where the cloned project needs to be copied
os.system(clone) # Cloning

13voto

Andrei Points 442

Liaison libgit2 de Github, pygit2 fournit une ligne unique de clonage d'un répertoire distant :

clone_repository(url, path, 
    bare=False, repository=None, remote=None, checkout_branch=None, callbacks=None)

13voto

crizCraig Points 2041

Voici un moyen d'imprimer la progression lors du clonage d'un repo avec GitPython

import time
import git
from git import RemoteProgress

class CloneProgress(RemoteProgress):
    def update(self, op_code, cur_count, max_count=None, message=''):
        if message:
            print(message)

print('Cloning into %s' % git_root)
git.Repo.clone_from('https://github.com/your-repo', '/your/repo/dir', 
        branch='master', progress=CloneProgress())

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X