Existe-t-il un moyen 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.Python façon de cloner un dépôt git
Répondre
Il y a http://gitorious.org/git-python/. Je n'ai jamais entendu parler de ça auparavant et en interne, ça dépend d'avoir les exécutables git quelque part; En outre, ils peuvent avoir beaucoup de bugs. Mais ça pourrait valoir le coup d'essayer.
Comment cloner:
import git
git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git")
(. Ce n'est pas agréable et je ne sais pas si c'est le moyen pris en charge de le faire, mais cela a fonctionné)
Avec la pointe Dulwich vous devriez être capable de faire:
from dulwich.repo import Repo
Repo("/path/to/source").clone("/path/to/target")
C'est encore très basique - il copie à travers les objets et les refs, mais il ne crée pas encore le contenu de l'arbre de travail si vous créez un référentiel non-nu. L'utilisation de GitPython vous donnera une bonne interface python à Git.
Par exemple, après l'avoir installé (pip install gitpython
), pour le clonage d'un nouveau référentiel, vous pouvez utiliser la fonction clone_from:
from git import Repo
Repo.clone_from(git_url, repo_dir)
Note: GitPython nécessite git être installé sur le système, et accessible via le PATH du système .
N'a pas fonctionné pour moi parce que "pip install gitpython" n'a pas installé la dernière version, à la place installé 1.7 qui n'a pas clone_from. Désolé pour le downvote, mon b :( – blented
@blented Merci d'avoir mentionné, mais malheureusement, il est dû à la version GitPython weired (le 1.7 est trop vieux) Quoi qu'il en soit, je m'attends à ce que quiconque voit cette question pour être en mesure de découvrir simplement faites 'pip installer gitpython == 0.3.2.RC1' à la place! –
@AmirAliAkbari 0.3.2 RC1 est maintenant le candidat d'installation par défaut. – Kasisnu
Ma solution est très simple et directe. Il n'a même pas besoin de l'entrée manuelle de paraphrase/mot de passe.
Voici mon code complet:
import os
import sys
path = "/path/to/store/your/cloned/project"
clone = "git clone [email protected]:/your/project/name.git"
os.system("sshpass -p your_password ssh [email protected]_localhost")
os.chdir(path) # Specifying the path where the cloned project has to be copied
os.system(clone) # Cloning
print "\n CLONED SUCCESSFULLY.! \n"
- 1. Faire un clone de Teamcity cloner un dépôt git
- 2. Meilleure façon de gérer le dépôt git
- 3. Comment cloner le dépôt GIT avec la clé privée
- 4. fatale: Pas un dépôt Git
- 5. Quel est le moyen le plus simple de cloner un dépôt git vide * * vide?
- 6. Comment synchroniser un dépôt git avec subversion?
- 7. Lire un dépôt Git, sans Git
- 8. Cloner SVN local checkout au GIT
- 9. Git, Impossible de cloner repo sur Windows
- 10. comment fusionner le dépôt git cloné avec le dépôt d'origine
- 11. Cloner plusieurs projets SVN avec git-svn
- 12. Comment dans Git, cloner un dépôt distant (GitHub) à partir d'une date spécifiée
- 13. Comment cloner un dépôt git avec seulement une branche non-maître?
- 14. Git montre l'erreur "ne semble pas être un dépôt git fatale: L'extrémité distante a raccroché de façon inattendue"
- 15. Cloner une partie de Git repo dans un autre repo
- 16. mercurial: "Cloner" juste un fichier d'un dépôt dans un autre?
- 17. déplacement commits de dépôt indépendant dans git, git-p4
- 18. Git: Comment obtenir un instantané d'un dépôt git
- 19. Nombre de validations dans un dépôt git
- 20. comment cloner un ancien git-commit (et quelques autres questions sur git)
- 21. fractionnement d'un dépôt git
- 22. Comment cloner un dépôt Mercurial à partir d'un changeset spécifique?
- 23. Où placer le dépôt Git
- 24. Comment ajouter une télécommande SVN à un dépôt Git?
- 25. Comment réinitialiser un dépôt git-svn
- 26. Git reset --hard et un dépôt distant
- 27. Ajouter .git/config à un autre dépôt Git
- 28. Comment synchroniser avec un dépôt Git distant?
- 29. Comment ajouter un dépôt git en tant que dépendance partagée d'un autre dépôt git?
- 30. Comment migrer un dépôt svk vers git, avec l'historique?
gitpy, je pense que ce serait appelé – SilentGhost
@SilentGhost: vous voulez dire * ce * gitpy? http://github.com/vmalloc/gitpy de http://www.ryaari.com/blog/?p=9 – VonC
On dirait qu'il y a GitPython (http://pypi.python.org/pypi/GitPython, http: //gitorious.org/git-python) que je ne pense pas avoir une méthode de clonage, mais je parie que vous pourriez en ajouter un ... en interne, il faudra quand même appeler 'git clone'. – Cascabel