
git-dumper v1.0.9
Uno strumento per scaricare un repository git da un sito web.
git-dumper
Uno strumento per scaricare un repository git da un sito web.
Installazione
Può essere installato facilmente con pip:
pip install git-dumper
Utilizzo
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)
Esempio
git-dumper http://website.com/.git ~/website
Dichiarazione di non responsabilità
Usa questo software a tuo rischio e pericolo!
Dovresti sapere che se il repository che stai scaricando è controllato da un attaccante, ciò potrebbe portare all'esecuzione di codice remoto sulla tua macchina.
Compilare dal sorgente
Basta installare le dipendenze con pip:
pip install -r requirements.txt
Quindi, usa semplicemente:
./git_dumper.py http://website.com/.git ~/website
Come funziona?
Lo strumento prima verificherà se il directory listing è disponibile. Se lo è, scaricherà ricorsivamente la directory .git (quello che faresti con wget).
Se il directory listing non è disponibile, userà diversi metodi per trovare quanti più file possibile. Passo dopo passo, git-dumper:
- Recupera tutti i file comuni (
.gitignore,.git/HEAD,.git/index, ecc.); - Trova quanti più ref possibili (come
refs/heads/master,refs/remotes/origin/HEAD, ecc.) analizzando.git/HEAD,.git/logs/HEAD,.git/config,.git/packed-refse così via; - Trova quanti più oggetti (sha1) possibili analizzando
.git/packed-refs,.git/index,.git/refs/*e.git/logs/*; - Recupera tutti gli oggetti ricorsivamente, analizzando ogni commit per trovare i loro genitori;
- Esegue
git checkout .per recuperare l'albero di lavoro corrente.