2012-04-23 15 views
2

管理したい関連するリポジトリがあります。Gitで関連するリポジトリのセットを管理する

私が保存したいデータは、「ユニット」からなる「ライブラリ」で構成される「プロジェクト」です。 各ライブラリはプロジェクトのサブフォルダに格納され、各ユニットはライブラリのサブフォルダに格納されます。

私はこの方式に応じてそれらを格納することを計画し、いくつかのプロジェクト間でのライブラリとのユニットを再利用できるようにするには:

repositories/projects/project1 
repositories/projects/project2> 
repositories/projects/project... 
repositories/libraries/library1 
repositories/libraries/library2 
repositories/libraries/library... 
repositories/units/unit1 
repositories/units/unit2 
repositories/units/unit... 

私は比較的プロジェクトで使用するライブラリを参照したいと思います(たとえば../../libraries/library1を使用しています)ライブラリ内のユニットを相対的に参照することもできます。

ライブラリとユニットは、それらを含むプロジェクトを変更することによってのみ変更できます。したがって、ライブラリとユニットリポジトリが必要な場合は、裸になる可能性があります。

サーバー上のリポジトリは同じに見えるはずです(同じフォルダのレイアウト)。

私は既にサブモジュールと "read-tree/subtree merge"アプローチを使ってみましたが、サブモジュールのケースでリポジトリへの相対URLを指定したり、read-treeアプローチで変更をプッシュする方法を見つけることができませんでした。

私がproject1をチェックアウトすると、必要なすべてのライブラリとユニットも取得されます。プロジェクトを通してライブラリやユニットを変更すると、これらの変更を簡単にサーバーに再度プッシュすることができます。

答えて

1

サブモジュールは、あなたのために行く方法であり、相対URLを許可します。

サブモジュールは、スーパープロジェクトのorigin URLに関連する別のサブモジュールURLを指定できます。したがって、次の

git submodule add ../library1 
git submodule --init update 

を使用し、project1にそして、それは問題ないはずです:ライブラリ1は、元のレポがProject1の隣にあること、Project1ののディレクトリにチェックアウトされます。

+0

私はそれが正しいことを確かめるために。 誰かがプロジェクトをクローンすると、サブモジュールの起源はローカルクローンになります。つまり、相対URLのクローン作成は相対的なままですか? – Onur

+0

プロジェクトがクローンされている場所によって異なりますが、project1用に指定されたサブモジュールURLは依然として中央リポジトリからの相対パスであるため、すべてのユーザーが中央リポジトリからクローンを作成しても問題ありません。同僚のレポからクローンを作成する場合は、「原点」を中央のレポに手動で設定する必要があります – CharlesB

関連する問題