GitHub の指定リポジトリからすべてのファイルを取得し、1つのテキストファイルにまとめるツールです。
学習目的で作成したものであり、本ツールを使用したことによるいかなる結果についても一切の責任を負いません。
ご利用の際は、プログラムや取得するリポジトリのライセンスを含め、各種規約を十分にご確認ください。
- APIレートリミット: GitHub の API を多数コールするため、レートリミットに達する場合があります。現状はその対策を行っていないので、レートリミットにかかった場合は時間をおいて再度実行してください(TODO: レートリミット対策の検討)。
- 利用範囲: 学習目的を想定しています。取得するコードのライセンスや、他人の権利を侵害しないようご注意ください。
- 免責: 本ソフトウェアを使用したことによって発生した損害・不具合・トラブルなど、いかなる事象についても作成者は責任を負いかねます。自己責任のもとでご利用ください。
-
リポジトリのクローンまたはダウンロード
git clone https://github.com/Yulikepython/repo-collector.git cd repo-collector -
必要ライブラリのインストール
pip install -r requirements.txt
※ 仮想環境(
venv/)などを用意して利用することをおすすめします。 -
.collectignore.sample について(任意)
特定の拡張子やパスを取得したくない場合は、同梱の.collectignore.sampleを参考にしてcp .collectignore.sample .collectignore
などで
.collectignoreを作成し、無視したいパターンを追記してください。 -
実行方法
-
--dirオプションは省略可能 です。指定しない場合、カレントディレクトリを出力先とします。 -
例: リポジトリ psf/requests を取得し、カレントディレクトリに
summary-requests.txtを出力する場合:python main.py --url https://github.com/psf/requests
カレントディレクトリ以外を指定したい場合:
python main.py --url https://github.com/psf/requests --dir /path/to/output
repo_collector.pyは単体でも動作しますが、.collectignore等を利用した無視パターン機能は含まれない点にご注意ください。
-
-
出力ファイル
- 実行後、指定ディレクトリ(省略時はカレントディレクトリ)に
summary-リポジトリ名.txtの形式でファイルが作成されます。 - 取得した各ファイルの内容を、
# ===== File: ファイルパス =====の見出しコメント付きで連結したテキストが出力されます。
- 実行後、指定ディレクトリ(省略時はカレントディレクトリ)に
repo-collector/
├─ repo_collector.py # 単体でも動作するメインスクリプト
├─ services.py # APIコールなどのサービス層
├─ controller.py # 引数パースと全体の制御
├─ main.py # controllerを利用した実行入口
├─ ignore_manager.py # .collectignoreを読み込み、無視すべきパスを判定
├─ venv/ # (任意) 仮想環境用フォルダ
├─ .collectignore.sample # ignoreしたいパターンのサンプル
├─ requirements.txt # インストールが必要なライブラリ一覧
└─ README.md # 本ファイル
- レートリミット回避策: GitHub のトークン認証(Personal Access Token の使用)やリクエスト間隔の調整などの対応を検討。
- フィルタリング強化: 取得したいファイルの種類を指定したり、取得しないディレクトリをまとめて除外したりする機能。
- 出力形式の拡張: テキストファイル以外のフォーマットへの出力(Markdown、HTML など)も検討。
本リポジトリは MIT License のもとで公開されています。
ご利用の際は、MIT ライセンスをご確認ください。
Disclaimer: This software is provided "as is", without warranty of any kind, express or implied.
Use it at your own risk.