ウェブサイトからGitリポジトリをダンプするツール。
pipで簡単にインストールできます:
pip install git-dumper
usage: git-dumper [options] URL DIR
Dump a git repository from a website.
positional arguments:
URL URL
DIR 出力ディレクトリ
optional arguments:
-h, --help このヘルプメッセージを表示して終了
--proxy PROXY 指定されたプロキシを使用
-j JOBS, --jobs JOBS 同時リクエスト数
-r RETRY, --retry RETRY
リクエスト試行回数(諦めるまで)
-t TIMEOUT, --timeout TIMEOUT
諦めるまでの最大秒数
-u USER_AGENT, --user-agent USER_AGENT
リクエストに使用するユーザーエージェント
-H HEADER, --header HEADER
追加のHTTPヘッダー(例 `NAME=VALUE`)
--client-cert-p12 CLIENT_CERT_P12
PKCS#12形式のクライアント証明書
--client-cert-p12-password CLIENT_CERT_P12_PASSWORD
クライアント証明書のパスワード
-b BRANCH, --branch BRANCH
チェックする追加ブランチ名(繰り返し指定可能)
git-dumper http://website.com/.git ~/website
このソフトウェアは自己責任で使用してください!
ダウンロードするリポジトリが攻撃者によって制御されている場合、リモートコード実行につながる可能性があることを認識しておく必要があります。
pipで依存関係をインストールするだけです:
pip install -r requirements.txt
その後、次のように使用します:
./git_dumper.py http://website.com/.git ~/website
ツールはまずディレクトリリスティングが利用可能かどうかを確認します。利用可能な場合は、単純に.gitディレクトリを再帰的にダウンロードします(wgetで行うのと同じです)。
ディレクトリリスティングが利用できない場合、可能な限り多くのファイルを見つけるためにいくつかの方法を使用します。段階的に、git-dumperは次のことを行います:
.gitignore、.git/HEAD、.git/indexなど)をすべて取得する;.git/HEAD、.git/logs/HEAD、.git/config、.git/packed-refsなどを分析して、可能な限り多くの参照(refs/heads/master、refs/remotes/origin/HEADなど)を見つける;.git/packed-refs、.git/index、.git/refs/*、.git/logs/*を分析して、可能な限り多くのオブジェクト(sha1)を見つける;git checkout . を実行して現在の作業ツリーを復元する