Warning
アーカイブ予定のお知らせ(2026-02-18)
このリポジトリは近く GitHub 上で Archived(read-only)化します。既存ユーザー向けに理由と移行先を明記します。
理由
- 本リポジトリの主要機能は
devsyncに統合済みのため。
移行先 / 代替手段
devsync(後継ツール): https://github.com/scottlz0310/devsync
既存利用中の方は、必要に応じて devsync への移行をご検討ください。
GitHub リポジトリのセットアップ・同期ツール。モダンなCLIインターフェースで複数リポジトリを効率的に管理できます。
- リポジトリ同期: GitHub オーナーの全リポジトリをクローン/プル
- 並列処理: 複数リポジトリを同時に処理(デフォルト10並列)
- ブランチクリーンアップ: マージ済みブランチの自動削除
- リッチな出力: プログレスバー、カラー出力、サマリー表示
- 構造化ログ: JSON形式のログファイル出力対応
- 非対話モードの
init挙動を改善(必須設定の不足時に明確なエラーを表示) branch_cleanupのテストを追加し挙動確認を強化
# グローバルツールとしてインストール
uv tool install git+https://github.com/scottlz0310/Setup-Repository.git
# 任意のディレクトリで使用可能
setup-repo --helppip install git+https://github.com/scottlz0310/Setup-Repository.gitgit clone https://github.com/scottlz0310/Setup-Repository.git
cd Setup-Repository
uv sync --dev# 対話式ウィザードで設定
setup-repo initウィザードでは以下を設定できます:
- GitHub 認証(オーナー名・トークン)
- ワークスペースディレクトリ
- クローン方式(HTTPS/SSH)
- 詳細オプション(ログ設定、auto-prune、auto-stash、auto-cleanup)
# GitHub オーナーのリポジトリを同期
setup-repo sync --owner <github-username>
# 特定のディレクトリにクローン
setup-repo sync --owner <github-username> --dest ~/projects
# ドライランモード(実行せずにプレビュー)
setup-repo sync --owner <github-username> --dry-run
# 並列数を指定
setup-repo sync --owner <github-username> --jobs 5# カレントディレクトリのリポジトリ
setup-repo cleanup
# 特定のリポジトリ
setup-repo cleanup /path/to/repo
# ドライランモード
setup-repo cleanup --dry-run
# 確認なしで削除
setup-repo cleanup --force
# ベースブランチを指定
setup-repo cleanup --base develop
# スクワッシュマージされたブランチも検出(GitHub API使用)
setup-repo cleanup --include-squash設定は以下の優先順位で読み込まれます(上が優先):
- 環境変数
- TOML 設定ファイル (
~/.config/setup-repo/config.toml) - 自動検出
- デフォルト値
setup-repo init コマンドで対話式に設定ファイルを作成できます:
setup-repo init設定ファイルは ~/.config/setup-repo/config.toml に保存されます:
[github]
owner = "your-username"
token = "ghp_xxxxxxxxxxxx"
[workspace]
dir = "~/workspace"
max_workers = 10
[git]
use_https = true
ssl_no_verify = false
auto_prune = true
auto_stash = false
auto_cleanup = false
auto_cleanup_include_squash = false
[logging]
file = "~/.local/share/setup-repo/logs/setup-repo.jsonl"環境変数は TOML 設定より優先されます:
| 変数名 | 説明 | デフォルト |
|---|---|---|
SETUP_REPO_GITHUB_OWNER |
GitHub オーナー名 | 自動検出 |
SETUP_REPO_GITHUB_TOKEN |
GitHub トークン | 自動検出 (gh auth token) |
SETUP_REPO_WORKSPACE_DIR |
ワークスペースディレクトリ | ~/workspace |
SETUP_REPO_MAX_WORKERS |
並列処理数 | 10 |
SETUP_REPO_USE_HTTPS |
HTTPS でクローン | false |
SETUP_REPO_GIT_SSL_NO_VERIFY |
SSL 検証をスキップ | false |
SETUP_REPO_AUTO_PRUNE |
pull 時に --prune | true |
SETUP_REPO_AUTO_STASH |
pull 時に自動 stash | false |
SETUP_REPO_AUTO_CLEANUP |
sync 後に自動 cleanup | false |
SETUP_REPO_AUTO_CLEANUP_INCLUDE_SQUASH |
sync 後の squash マージ検出を含める | false |
SETUP_REPO_LOG_FILE |
ログファイルパス | なし |
以下の設定は自動的に検出されます:
- GitHub オーナー:
gh api userまたはgit config user.nameから取得 - GitHub トークン:
gh auth tokenから取得
setup-repo [OPTIONS] COMMAND [ARGS]
Options:
-v, --verbose 詳細な出力を表示
-q, --quiet サマリーのみ表示
--log-file PATH JSON ログファイルパス
--help ヘルプを表示setup-repo init対話式ウィザードで設定ファイルを作成します。設定は ~/.config/setup-repo/config.toml に保存されます。
setup-repo sync [OPTIONS]
Options:
-o, --owner TEXT GitHub オーナー名
-d, --dest PATH クローン先ディレクトリ
-j, --jobs INTEGER 並列数 [default: 10]
--no-prune fetch --prune をスキップ
-n, --dry-run 実行せずにプレビューsetup-repo cleanup [OPTIONS] [PATH]
Arguments:
[PATH] 対象リポジトリパス [default: カレントディレクトリ]
Options:
-b, --base TEXT ベースブランチ [default: main]
-n, --dry-run 削除せずにプレビュー
-f, --force 確認なしで削除
-s, --include-squash スクワッシュマージされたブランチも検出(GitHub API使用)注意事項:
--include-squashオプションを使用する場合、GitHub トークンが必要です- トークンは
SETUP_REPO_GITHUB_TOKEN環境変数または設定ファイルから取得されます - スクワッシュマージの検出には GitHub API を使用するため、リモートが GitHub である必要があります
# リポジトリをクローン
git clone https://github.com/scottlz0310/Setup-Repository.git
cd Setup-Repository
# 依存関係をインストール
uv sync --dev
# pre-commit フックをインストール
uv run pre-commit install# 全テスト実行
uv run pytest
# カバレッジ付き
uv run pytest --cov=src/setup_repo --cov-report=html
# 並列実行
uv run pytest -n auto# リンティング
uv run ruff check .
# フォーマッティング
uv run ruff format .
# 型チェック
uv run basedpyright src/
# セキュリティチェック
uv run bandit -r src/
# 全チェック(pre-commit)
uv run pre-commit run --all-filessrc/setup_repo/
├── __init__.py
├── cli/ # CLI レイヤー
│ ├── app.py # Typer アプリケーション
│ ├── output.py # Rich 出力ヘルパー
│ └── commands/
│ ├── init.py # init コマンド(設定ウィザード)
│ ├── sync.py # sync コマンド
│ └── cleanup.py # cleanup コマンド
├── core/ # コアロジック
│ ├── git.py # Git 操作
│ ├── github.py # GitHub API クライアント
│ └── parallel.py # 並列処理
├── models/ # データモデル
│ ├── config.py # 設定モデル
│ ├── repository.py # リポジトリモデル
│ └── result.py # 処理結果モデル
└── utils/ # ユーティリティ
├── console.py # Rich コンソール
└── logging.py # Structlog 設定
- CLI Framework: Typer - モダンな CLI フレームワーク
- Console Output: Rich - リッチなターミナル出力
- HTTP Client: httpx - 非同期対応 HTTP クライアント
- Data Validation: Pydantic - データバリデーション
- Configuration: pydantic-settings - 設定管理
- Logging: structlog - 構造化ログ
MIT License - see LICENSE for details.
コントリビューションを歓迎します。詳細は CONTRIBUTING.md を参照してください。