
git-dumper v1.0.9
Uma ferramenta para extrair um repositório git de um site
git-dumper
Uma ferramenta para extrair um repositório git de um site.
Instalação
Pode ser instalado facilmente com pip:
pip install git-dumper
Uso
usage: git-dumper [options] URL DIR
Extrai um repositório git de um site.
positional arguments:
URL url
DIR diretório de saída
optional arguments:
-h, --help mostra esta mensagem de ajuda e sai
--proxy PROXY usa o proxy especificado
-j JOBS, --jobs JOBS número de requisições simultâneas
-r RETRY, --retry RETRY
número de tentativas de requisição antes de desistir
-t TIMEOUT, --timeout TIMEOUT
tempo máximo em segundos antes de desistir
-u USER_AGENT, --user-agent USER_AGENT
user-agent a ser usado nas requisições
-H HEADER, --header HEADER
cabeçalhos http adicionais, ex.: `NOME=VALOR`
--client-cert-p12 CLIENT_CERT_P12
certificado do cliente no formato PKCS#12
--client-cert-p12-password CLIENT_CERT_P12_PASSWORD
senha para o certificado do cliente
-b BRANCH, --branch BRANCH
nome de branch adicional para verificar (repetível)
Exemplo
git-dumper http://website.com/.git ~/website
Aviso de responsabilidade
Use este software por sua conta e risco!
Você deve saber que, se o repositório que está baixando for controlado por um invasor, isso pode levar à execução remota de código na sua máquina.
Compilar a partir do código-fonte
Simplesmente instale as dependências com pip:
pip install -r requirements.txt
Em seguida, use:
./git_dumper.py http://website.com/.git ~/website
Como funciona?
A ferramenta primeiro verifica se a listagem de diretório está disponível. Se estiver, ela simplesmente fará o download recursivo do diretório .git (o que você faria com wget).
Se a listagem de diretório não estiver disponível, ela usará vários métodos para encontrar o maior número possível de arquivos. Passo a passo, o git-dumper irá:
- Buscar todos os arquivos comuns (
.gitignore,.git/HEAD,.git/index, etc.); - Encontrar o maior número possível de referências (como
refs/heads/master,refs/remotes/origin/HEAD, etc.) analisando.git/HEAD,.git/logs/HEAD,.git/config,.git/packed-refse assim por diante; - Encontrar o maior número possível de objetos (sha1) analisando
.git/packed-refs,.git/index,.git/refs/*e.git/logs/*; - Buscar todos os objetos recursivamente, analisando cada commit para encontrar seus pais;
- Executar
git checkout .para recuperar a árvore de trabalho atual