次の構造のgithubでホストされているプロジェクトがあります
github.com/example/allpackages
.
├── .git
└── packages
├── example-1
├── example-2
└── example-3
github にプッシュするたびに、各パッケージの内容をリポジトリ名に対応するリポジトリにプッシュしたいと思います。
github.com/example/example1
.
├── .git
└── example1
github.com/example/example2
.
├── .git
└── example2
等
これを自動化する方法についてのアイデアはありますか? このタスクに Travis-CI を使用すると誰かが言及していましたが、それがどのように機能するかについての詳細は見つかりませんでした。
私の理想的な解決策:
- 完全に自動化されます。つまり、プッシュするコンピューターによって更新がトリガーされるのではなく、github または外部サービスによってトリガーされます。
- 更新時に「allpackages」から対応するサブリポジトリに履歴を移行します
どこから調査を開始するかについてのガイダンスは大歓迎です。前もって感謝します!
編集:
@VonC は、サブモジュールを使用し、使用してコミットすることを提案しましたgit submodule foreach --recursive
長所:
- ドライ - 各サブモジュールのコードは 1 か所にあります。
- 親のサブモジュールへの変更を追跡できます。
- エイリアスを使用
git submodule foreach --recursive
すると、複数のサブモジュールへの単一のコミットが可能になります
短所:
- サブモジュールに加えられた変更を表示することは、すぐには明確ではありません。サブモジュールを掘り下げて、どのような変更が行われたかを確認する必要があります。
- 使用
git submodule foreach --recursive
は面倒で、通常のコミットほどエレガントではありません。
この特定のユースケースの場合。たとえば、「パッケージ」リポジトリgithub.com/example/example1
は、ある意味で読み取り専用になります。私は彼らに直接プッシュしません。が更新されたときにのみ更新を受け取りますallpackages
。それらを作成する必要がある唯一の理由は、それらを利用するパッケージマネージャーが各パッケージに個別のリポジトリを必要とするためです。