¿Hay una forma de Python sin usar un subproceso para clonar un repositorio de git? Estoy dispuesto a usar cualquier tipo de módulos que recomiende.Manera de Python para clonar un repositorio de git
Respuesta
Hay http://gitorious.org/git-python/. No he oído hablar de eso antes e internamente, confía en tener los ejecutables de git en algún lado; Además, pueden tener muchos errores. Pero podría valer la pena intentarlo.
Cómo clonar:
import git
git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git")
(. No es agradable y no sé si es la forma compatible de hacerlo, pero funcionó)
Con punta de Dulwich usted debe estar capaz de hacer:
from dulwich.repo import Repo
Repo("/path/to/source").clone("/path/to/target")
Esto es aún muy básico - se copia a través de los objetos y los árbitros, pero todavía no crea el contenido del árbol de trabajo si se crea un repositorio no-desnudo.
El uso de GitPython le dará una buena interfaz de Python para Git.
Por ejemplo, después de instalarlo (pip install gitpython
), para la clonación de un nuevo repositorio puede utilizar clone_from función:
from git import Repo
Repo.clone_from(git_url, repo_dir)
Nota: GitPython requiere git ser instalado en el sistema, y accesible a través de PATH del sistema .
No funcionó para mí porque "pip install gitpython" no instaló la compilación más reciente, en cambio instaló 1.7 que no tiene clone_from. Lo siento por el downvote, mi b :( – blented
@blented Gracias por mencionarlo, pero desafortunadamente es debido a las versiones cargadas de GitPython (el 1.7 es muy antiguo). De todos modos, espero que cualquiera que vea esta pregunta pueda averiguarlo simplemente do 'pip install gitpython == 0.3.2.RC1' en su lugar! –
@AmirAliAkbari 0.3.2 RC1 es ahora el candidato de instalación predeterminado. – Kasisnu
Mi solución es muy simple y sencillo. Ni siquiera necesita la entrada manual de paráfrasis/contraseña.
Aquí está mi código 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. Cómo clonar selectivamente un repositorio git
- 2. clonar un repositorio git (en profundidad)
- 3. Can Git clonar un repositorio desnudo en otro repositorio vacío
- 4. Error al clonar git repositorio de "superficial"
- 5. Git log sin clonar el repositorio?
- 6. Error de copia conflictiva de Git al clonar un repositorio
- 7. Al clonar un repositorio svn en git, ¿debería clonar solo trunk o todo el repositorio?
- 8. rama principal es visible después de clonar un repositorio git
- 9. ¿Cuál es la mejor manera de clonar/duplicar un proyecto en un nuevo con git?
- 10. Git, No se puede clonar el repositorio en Windows
- 11. ¿Por qué no puedo clonar ningún repositorio en Git?
- 12. Git: ¿Cómo clonar una biblioteca de terceros en un subdirectorio del repositorio de mi aplicación?
- 13. ¿Cómo manejar un repositorio grande de git?
- 14. git clonar en una rama
- 15. ¿Hay una manera simple de "describir git" un repositorio remoto?
- 16. ¿Cómo puedo clonar un repositorio grande de Git en una conexión no confiable?
- 17. ¿Cómo clonar solo una carpeta de un submódulo git?
- 18. Problema al clonar un repositorio de git desde una instancia de EC2
- 19. Obtiene la última etiqueta de git de un repositorio remoto sin clonar
- 20. Leyendo un repositorio de Git, sin Git
- 21. ¿qué significa esto clonar el repositorio de GitHub?
- 22. ¿Cuál es la forma más directa de clonar un repositorio vacío, * bare * git?
- 23. ¿Cómo evito que git agregue retornos de carro al clonar un repositorio en Windows?
- 24. "ERROR: gitosis.serve.main: acceso de lectura del repositorio denegado" al intentar clonar un git repo
- 25. Mover un repositorio de git
- 26. ¿Cómo configurar y clonar un repositorio remoto de git en Windows?
- 27. Tiempo de conexión de Git tratando de clonar mediante proxy
- 28. git workflow - usando un repositorio como base para otro
- 29. ¿Hay alguna manera de configurar el repositorio de git para que rechace 'git push --force'?
- 30. espejo git de solo lectura de un repositorio svn
gitpy, supongo que sería llamado – SilentGhost
@SilentGhost: ¿Quiere decir esto * * gitpy? http://github.com/vmalloc/gitpy de http://www.ryaari.com/blog/?p=9 – VonC
Parece que hay GitPython (http://pypi.python.org/pypi/GitPython, http: //gitorious.org/git-python) que no creo que tenga un método de clonación, pero apostaría que podrías agregar uno ... internamente va a tener que llamar a 'git clone' de todos modos. – Cascabel