git-sync - ローカルチェックアウトなしで Git リモート間の ref を直接ミラーリングする CLI ツール
(github.com/entireio)- ローカルクローン不要で、ソースリモートからターゲットリモートへ ref とオブジェクトを直接ストリーミングし、ローカルディスクにリポジトリをチェックアウトしない
- Relay 転送経路により、ソース
upload-packのパックデータをターゲットreceive-packにそのまま流し込み、リポジトリのサイズに関係なくメモリ使用量は一定 - relay が不可能な場合(force、prune、delete など)は Materialized フォールバックでインメモリの
go-gitストアにオブジェクトを fetch した後、パックファイルをエンコードして push し、--materialized-max-objectsでメモリ上限を設定可能 git-sync syncひとつで 空のターゲットへの初期シードから継続的な同期まで処理でき、git-sync planで push 前のプレビューが可能git-sync replicateはターゲット ref をソースと完全に一致させるが、ローカル materialize が必要な場合は失敗として扱う厳格モード- ref の作成、更新、
--forceによる強制更新、--pruneによる削除など あらゆる ref 管理アクションをサポート - すべてのアクションを push 前に計画し、型付き JSON 出力を提供するため、CI/自動化パイプラインにそのまま接続可能
- Go ライブラリとしても組み込み可能で、
Probe、Plan、Sync、Replicateなどの 安定 API を提供 - 単方向専用、SSH 非対応(Smart HTTP/HTTPS のみ)、デーモン/監視機能なしのワンショット実行方式
- MIT ライセンス
1件のコメント
worktreeが流行っているから作ったのかな。使ってみよう!