1

私たちのサーバーは、複数のユーザーが同時に作業する複数のプロジェクトを持つようにセットアップされており、各プロジェクトがいくつかのソースコードを共有する同じサーバーに配置されています。セットアップは次のとおりです。

  • /src/shared/複数のプロジェクトで共有されるコード
  • /src/project_code/project1 project1固有のコード
  • /src/project_code/project2 project2固有のコード
  • /projects/project1 project1の入力と出力
  • /projects/project2 project2の入力と出力

ソース コード (共有およびプロジェクト固有) を git でバージョン管理したいと考えています (ただし、プロジェクト データはサイズが大きいためそうではありません)。

これに対する私たちの提案する解決策は、すべてのソース コードに対して単一の git リポジトリを用意することです (/src 内)。次に、ユーザーはリポジトリ全体を関連するプロジェクト ディレクトリ (例: /projects/project1) にチェックアウトして、プロジェクトで作業します (例: /projects/project1/src)。これは、サーバー上の他のプロジェクトで作業している他のユーザーに影響を与えるプロジェクトに必要な共有ソース コードへの変更を避けるためです。プロジェクト固有のコードは共有コードを参照し、したがって一緒に追跡する必要があるため、この単一のリポジトリ ソリューションは理にかなっているようです。計画では、必要に応じてバグ修正/改善を /src にコミットする予定です。プロジェクトの終了時に、ユーザーはすべてのソース コードの特定のバージョンをコミットできるため、後日、

このシステムの主な欠点は、各プロジェクト ディレクトリに共有ソース コードのコピーと、他のすべてのプロジェクトのソース コードが含まれることです。ただし、ソース コードは比較的小さいため、これはハード ドライブ スペースの観点からは大きなオーバーヘッドではありません。

上記の計画にコミットする前に、この問題に対するより良い解決策を聞きたいと思います.

4

1 に答える 1

2

共有コードと各プロジェクトに個別のリポジトリが必要です。各プロジェクトには、サブモジュールとして共有コード リポジトリがあります。

ツリーは次のようになります。

  • /project1/src - プロジェクト 1 の「ローカル」ソース
  • /project1/lib/shared - 共有リポジトリのサブモジュール
  • /project2/src - プロジェクト 2 の「ローカル」ソース
  • /project2/lib/shared - 共有リポジトリのサブモジュール

サブモジュールの詳細については、http: //git-scm.com/book/en/Git-Tools-Submodulesを参照してください。

于 2013-07-11T19:32:50.503 に答える