Esiste un modo Python senza utilizzare un sottoprocesso per clonare un repository git? Sono pronto per l'utilizzo di qualsiasi tipo di modulo che consigli.Python per clonare un repository git
risposta
C'è http://gitorious.org/git-python/. Non ne ho mai sentito parlare prima e internamente, si basa sul fatto di avere gli eseguibili git da qualche parte; Inoltre, potrebbero avere molti bug. Ma potrebbe valere la pena provare.
come clonare:
import git
git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git")
(. Non è bello e non so se è il modo supportato per farlo, ma ha funzionato)
Con Dulwich punta si dovrebbe essere in grado di fare:
from dulwich.repo import Repo
Repo("/path/to/source").clone("/path/to/target")
questo è ancora molto semplice - esso copia attraverso gli oggetti e gli arbitri, ma non ha ancora creare il contenuto del albero di lavoro se si crea un repository non-nudo.
L'utilizzo di GitPython offre un'interfaccia Python valida per Git.
Ad esempio, dopo l'installazione (pip install gitpython
), per clonare un nuovo repository è possibile utilizzare clone_from funzione:
from git import Repo
Repo.clone_from(git_url, repo_dir)
Nota: GitPython richiede git essere installato sul sistema, e accessibile tramite PATH del sistema .
Non ha funzionato per me perché "pip install gitpython" non ha installato l'ultima build, invece ha installato 1.7 che non ha clone_from. Scusa per il downvote, my b :( – blented
@blented Grazie per averlo menzionato, ma sfortunatamente è dovuto alla versione di GitPython (il 1.7 è troppo vecchio) In ogni caso, mi aspetto che chiunque veda questa domanda sia in grado di scoprire semplicemente do 'pip installa gitpython == 0.3.2.RC1', invece! –
@AmirAliAkbari 0.3.2 RC1 è ora il candidato di installazione predefinito. – Kasisnu
mia soluzione è molto semplice e diretto. Non ha nemmeno bisogno dell'inserimento manuale di parafrasi/password.
Ecco il mio codice completo:
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. Come clonare selettivamente un repository git
- 2. Posso clonare un repository git da BitBucket?
- 3. Come clonare un repository git di stile git-flow?
- 4. Git, Impossibile clonare il repository su Windows
- 5. Come clonare repository git su redmine?
- 6. Come posso clonare un repository privato Gitlab?
- 7. Come posso clonare un repository git e mantenere i telecomandi?
- 8. Clonare un repository Svn non standard con Git-Svn
- 9. Come configurare e clonare un repository git remoto su Windows?
- 10. Come clonare un repository git remoto con Android Studio?
- 11. Come clonare un repository Subversion con "GitHub per Windows"?
- 12. Come clonare un repository di bitbucket?
- 13. Visual Studio Impossibile clonare il repository remoto (EOF anticipato) - GIT
- 14. Impossibile clonare il repository GIT sull'unità di rete
- 15. Impossibile clonare repository Git - "Funzione oggetto ... non ha metodo 'hasMagic'"
- 16. git - come posso clonare il repository svn locale?
- 17. Utilizzo di un repository git biforcato, tranne che per clonare l'URL repo pubblico, non l'URL privato
- 18. Ansible: come clonare un repository come altro utente
- 19. fatale: Non un Git repository
- 20. clonazione di un repository Git su SFTP
- 21. Clonazione di un repository Git senza la directory .git
- 22. Come aggiornare un file nel repository remoto, senza prima clonare quel repository?
- 23. Creare un repository git che contenga un altro repository git
- 24. clonare un ramo specifico da git attraverso la playbook ansible
- 25. Come clonare un wiki GitHub?
- 26. "Non un repository git"
- 27. utilizzando git per clonare un progetto CodePlex che utilizza SVN
- 28. Clonazione repository git mancata
- 29. Come faccio a copiare/clonare un repository git senza sprecare spazio?
- 30. Cluster git repository senza cronologia?
gitpy, credo che sarebbe chiamato – SilentGhost
@SilentGhost: vuoi dire * questa * gitpy? http://github.com/vmalloc/gitpy da http://www.ryaari.com/blog/?p=9 – VonC
Sembra che ci sia GitPython (http://pypi.python.org/pypi/GitPython, http: //gitorious.org/git-python) che non credo abbia un metodo di clonazione, ma scommetto che potresti aggiungerne uno ... internamente dovrà comunque chiamare 'git clone' comunque. – Cascabel