アップデート一覧に戻る
New releaseSep 7, 2026

git-dumper v1.0.9

ウェブサイトからgitリポジトリをダンプするツール

共有

git-dumper

ウェブサイトから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/masterrefs/remotes/origin/HEADなど)を見つける;
  • .git/packed-refs.git/index.git/refs/*.git/logs/*を分析して、可能な限り多くのオブジェクト(sha1)を見つける;
  • すべてのコミットを分析して親コミットを見つけ、再帰的にすべてのオブジェクトを取得する;
  • git checkout . を実行して現在の作業ツリーを復元する

カテゴリ