私は、さまざまなライブラリを介して多くのコードを共有するいくつかの(かなり小さな)プログラムを担当しています。さまざまなプログラム(およびライブラリ)を開発し、すべてのプログラム間でライブラリの同期を維持するのに最適なリポジトリレイアウトは何でしょうか。
議論のために、2つのライブラリを持つ2つのプログラムがあるとしましょう。
- プログラム1
- Library1
- Library2
- プログラム2
- Library1
- Library2
当然、ライブラリのバグ修正と機能拡張は(最終的には)すべてのプログラムに統合されるはずです。ライブラリはさまざまなプログラムで作業しているときに作業しているため、外部定義を使用することは問題外のようです。
そのため、1つの場所を除いてすべてのライブラリをベンダーのブランチとして扱うことを考えましたが、これに最適なレイアウトが何であるかはわかりません。
私は次のようなことを考えていました。
- ライブラリ
- Library1(祖先)
- Library2(祖先)
- プログラム1
- Program1コード
- Library1(ベンダーブランチ)
- Library2(ベンダーブランチ)
- ..。
次に、Program1を開発するときに、Library2にいくつかの変更が加えられた場合、それらをリポジトリのLibraries部分にマージして戻し、必要に応じてそこから他のすべてのプログラムにマージします。
他のプログラムへのマージは常にすぐに行われるとは限りません。Program2で作業している人はリリースに近づき、最初にリリースを終了し、タグを作成してから、すべてのライブラリを更新する可能性があります。
これにより、しばらくすると多くのマージとメンテナンスの問題が発生するのではないかと少し心配していますが、これ以上の解決策は見当たりません。
繰り返しになりますが、これは私にはかなり一般的なユースケースのように思われるので、stackoverflowコミュニティに質問したいと思いました。これを実現するための最適なリポジトリレイアウトは何ですか?