私は複数のプロジェクト(Eclipseプロジェクト)を持っており、実際の日々の開発の観点から何が最も効果的かを見つけるためにさまざまなことを試みました。これが私が見つけたものであり、結果を追跡して客観的に分析すれば、ほとんどの人が同じことを見つけるだろうと思います。
つまり、次のルールを適用すると、最良の結果が得られます。
- プロジェクトグループごとに個別のリポジトリを作成します。
- 各プロジェクトグループは、互いに緊密に接続されているプロジェクトのグループで構成されており、一緒に管理する必要があり、互いに簡単に切り離すことはできません。
- プロジェクトグループには、単一のプロジェクトを含めることができます。
- 複数のプロジェクトを含むプロジェクトグループを調べて、プロジェクトの一部を互いに切り離して、互いに緊密に接続されたプロジェクトを含む小さなプロジェクトグループに分割できるかどうかを確認し、一緒に管理する必要があります。そして、それは互いに簡単に切り離すことはできません。
次のガイドラインは、同じリポジトリに配置するプロジェクトを決定するためのこのプロセスをより詳細に説明しています。
プロジェクトが他のプロジェクトと密接に関連していない場合(たとえば、他のプロジェクトを開かなくてもプロジェクトを開くことができ、他のプロジェクトが開いたときに開いているプロジェクトに依存しない場合)、必ず独自のリポジトリに配置する必要があります上記の回答で説明されている理由によります。
プロジェクトが他のプロジェクトに依存している場合、または他のプロジェクトがプロジェクトに依存している場合は、それらが互いにどの程度接続されているか、それらをどれだけうまくパッケージ化できるか、およびどれだけ簡単に互いに分離できるかによって決まります。
A)たとえば、メインプロジェクトのクラスをテストするためのjunitテストクラスを含むテストプロジェクトは、2つのプロジェクトが互いに非常に接続されており、簡単にパッケージ化でき、簡単に分離できない場合です。これらのプロジェクトは、以下のパートCで説明する理由により、同じリポジトリに配置する必要があります。
B)あるプロジェクトが、ある種の共有リソースを提供するために別のプロジェクトに依存している場合、それらを一緒に管理できるかどうか、およびそれらを互いに分離できるかどうかにかかっています。たとえば、共有リソースを持つプロジェクトが多くのプロジェクトに依存している場合、他の無関係なプロジェクトは共有ソースコードプロジェクトへの変更の影響を受けるため、それを独自のリポジトリに配置する必要があります。このような場合、共有リソースプロジェクトは、依存プロジェクトに直接接続するのではなく、依存プロジェクトから切り離す必要があります。(たとえば、バージョン管理されたアーカイブファイル[「projectName」.1.0.1.0のような名前のJarファイルを作成することをお勧めします。
C)複数のプロジェクトが接続されていて、簡単に一緒に管理できるが、互いに簡単に切り離すことができない場合は、それらが互いにどれだけ緊密に接続されているかによって異なります。
I)プロジェクトが1つのリポジトリに配置されている場合、コミットが行われるたびにプロジェクトはリポジトリ内で相互に同期されます。これは、プロジェクトが緊密に接続されている場合、実際の節約になります。ただし、これにより、上記の回答に記載されている問題も発生します。
II)プロジェクトが別々のリポジトリに配置されている場合は、コミットの同期を維持するように注意し、プロジェクト全体で同じ同期ポイントに属するコミットを示す何らかのメカニズムを含める必要があります(おそらく、プロジェクト全体でコミットのグループが実行されるときに、各プロジェクトのコミットのコメントに同じ同期ポイント番号を含めるようなものです。)
III)したがって、このような場合は、ほとんどの場合、これらのプロジェクトを1つのリポジトリにまとめて、コミットの同期にかかる人的労力のオーバーヘッドを減らし、コミットを取り消す必要がある場合の人的エラーを回避することをお勧めします。それらを別々のリポジトリに配置する方がよい場合は、プロジェクトの1つだけが定期的に変更され、他の接続されたプロジェクトはめったに変更されない場合のみです。