
git-dumper v1.0.9
Una herramienta para volcar un repositorio git de un sitio web
git-dumper
Una herramienta para volcar un repositorio git de un sitio web.
Instalación
Se puede instalar fácilmente con pip:
pip install git-dumper
Uso
usage: git-dumper [options] URL DIR
Dump a git repository from a website.
positional arguments:
URL url
DIR output directory
optional arguments:
-h, --help muestra este mensaje de ayuda y sale
--proxy PROXY usa el proxy especificado
-j JOBS, --jobs JOBS número de solicitudes simultáneas
-r RETRY, --retry RETRY
número de intentos de solicitud antes de rendirse
-t TIMEOUT, --timeout TIMEOUT
tiempo máximo en segundos antes de rendirse
-u USER_AGENT, --user-agent USER_AGENT
user-agent a usar para las solicitudes
-H HEADER, --header HEADER
cabeceras http adicionales, ej. `NAME=VALUE`
--client-cert-p12 CLIENT_CERT_P12
certificado de cliente en formato PKCS#12
--client-cert-p12-password CLIENT_CERT_P12_PASSWORD
contraseña para el certificado de cliente
-b BRANCH, --branch BRANCH
nombre de rama adicional para comprobar (repetible)
Ejemplo
git-dumper http://website.com/.git ~/website
Descargo de responsabilidad
¡Usa este software bajo tu propio riesgo!
Debes saber que si el repositorio que estás descargando está controlado por un atacante, esto podría provocar la ejecución remota de código en tu máquina.
Compilar desde el código fuente
Simplemente instala las dependencias con pip:
pip install -r requirements.txt
Luego, simplemente usa:
./git_dumper.py http://website.com/.git ~/website
¿Cómo funciona?
La herramienta primero comprobará si el listado de directorios está disponible. Si es así, simplemente descargará recursivamente el directorio .git (lo que harías con wget).
Si el listado de directorios no está disponible, usará varios métodos para encontrar tantos archivos como sea posible. Paso a paso, git-dumper:
- Obtiene todos los archivos comunes (
.gitignore,.git/HEAD,.git/index, etc.); - Encuentra tantas referencias como sea posible (como
refs/heads/master,refs/remotes/origin/HEAD, etc.) analizando.git/HEAD,.git/logs/HEAD,.git/config,.git/packed-refsy así sucesivamente; - Encuentra tantos objetos (sha1) como sea posible analizando
.git/packed-refs,.git/index,.git/refs/*y.git/logs/*; - Obtiene todos los objetos recursivamente, analizando cada commit para encontrar sus padres;
- Ejecuta
git checkout .para recuperar el árbol de trabajo actual