一部のソース コード (S) を共有する 2 つの密接に関連するプロジェクト (A と B) があります。どちらも同時にリリースされ、リリースされたバージョンは常に同じバージョンの共有コードを使用する必要があります。共有コード S は妥当な頻度で変更されます。
したがって、次のようになります。
- バージョン 1 は S バージョン 1 を使用します
- B バージョン 1 は S バージョン 1 を使用します
- バージョン 2 は S バージョン 2 を使用します
- B バージョン 2 は S バージョン 2 を使用します
これを git (および/または git を使用するいくつかのツール) で処理する最良の方法は何ですか?
ここに私の懸念があります:
- プロジェクト A とプロジェクト B は別々のリポジトリにある必要があります (これらは関連していますが、それらの間で自由にコードをやり取りしたくありません)
- 共有コードが 1 つのプロジェクトで更新された場合、別のプロジェクトで自動的に更新される必要があります (開発者が何かをするのを忘れて、古いバージョンの共有コードになってしまうような状況は望んでいません)。
私が理解しているように、標準的な答えの1つは「gitサブモジュールを使用する」です。しかし、私はこのアプローチについていくつかの批判を読みました。めったに変更されない共有ライブラリ向けに設計されているように感じました。
私が読んだ別のアプローチは、gitサブツリーを使用していました
また、あまり人気のないアプローチがいくつかあります: Repo、GitSlave
この種のコード共有を処理するには、どのような方法が最適でしょうか?