
git-dumper v1.0.9
Un outil pour extraire un dépôt git d'un site web
git-dumper
Un outil pour extraire un dépôt git d'un site web.
Installation
Cela peut être installé facilement avec pip :
pip install git-dumper
Utilisation
usage: git-dumper [options] URL DIR
Dump a git repository from a website.
positional arguments:
URL url
DIR output directory
optional arguments:
-h, --help show this help message and exit
--proxy PROXY use the specified proxy
-j JOBS, --jobs JOBS number of simultaneous requests
-r RETRY, --retry RETRY
number of request attempts before giving up
-t TIMEOUT, --timeout TIMEOUT
maximum time in seconds before giving up
-u USER_AGENT, --user-agent USER_AGENT
user-agent to use for requests
-H HEADER, --header HEADER
additional http headers, e.g `NAME=VALUE`
--client-cert-p12 CLIENT_CERT_P12
client certificate in PKCS#12 format
--client-cert-p12-password CLIENT_CERT_P12_PASSWORD
password for the client certificate
-b BRANCH, --branch BRANCH
additional branch name to check for (repeatable)
Exemple
git-dumper http://website.com/.git ~/website
Avertissement
Utilisez ce logiciel à vos propres risques !
Vous devez savoir que si le dépôt que vous téléchargez est contrôlé par un attaquant, cela pourrait conduire à une exécution de code à distance sur votre machine.
Compiler à partir des sources
Installez simplement les dépendances avec pip :
pip install -r requirements.txt
Ensuite, utilisez simplement :
./git_dumper.py http://website.com/.git ~/website
Comment ça marche ?
L'outil vérifiera d'abord si le listage des répertoires est disponible. Si c'est le cas, il téléchargera récursivement le répertoire .git (ce que vous feriez avec wget).
Si le listage des répertoires n'est pas disponible, il utilisera plusieurs méthodes pour trouver autant de fichiers que possible. Étape par étape, git-dumper va :
- Récupérer tous les fichiers communs (
.gitignore,.git/HEAD,.git/index, etc.) ; - Trouver autant de refs que possible (comme
refs/heads/master,refs/remotes/origin/HEAD, etc.) en analysant.git/HEAD,.git/logs/HEAD,.git/config,.git/packed-refset ainsi de suite ; - Trouver autant d'objets (sha1) que possible en analysant
.git/packed-refs,.git/index,.git/refs/*et.git/logs/*; - Récupérer tous les objets récursivement, en analysant chaque commit pour trouver ses parents ;
- Exécuter
git checkout .pour récupérer l'arbre de travail actuel