これを行ったモジュールがいくつかあり、基本的には次のことを行いました。
- モジュールのGitリポジトリをセットアップします。
- このモジュールを実稼働サイトのコードベースにデプロイし、以下を含むすべてをコミットします。
- modmanによって作成されたソフトリンク
- クローン化されたモジュールリポジトリを格納する.modmanディレクトリ
- modmanを使用して、開発およびテスト用に他のバージョンや開発環境に「展開」します。
このようにすると、モジュール開発に必要な柔軟性が得られ、単一サイトのコードもバージョン管理されます。また、単一サイトのコードベースでモジュールに変更を加えた場合、モジュールリポジトリに直接コミットできます。リポジトリは.modmanディレクトリにあります。
更新:
私が最初にこれを書いたとき、Gitは(サブ)モジュールをリポジトリにコミットすることを許可していないという私の答えを考慮に入れませんでした。その場合、「すべてをコミットする」種類の精緻化が必要です!
ちなみに、これはmodmanを使用してGitリポジトリに格納されているモジュールをSVNに格納されている製品コードベースに展開する頻度が高くなっているためです。
だからここに行く...
SVNを使用して本番サイトのコードを格納している場合、Subversionには(実際には)サブモジュールの概念がないため、問題はありません。気にしません。
本番サイトのコードにGitを使用している場合、サブモジュールを使用してサイトのコードリポジトリに「すべてをコミット」する必要があります。modmanを使用して次のようなクローンを作成した後:
modman clone ssh://git@bitbucket.org/<user>/<repo>.git
次のようにサブモジュールとして追加することもできます。
git submodule add ssh://git@bitbucket.org/<user>/<repo>.git .modman/<repo>
これを行うと、.modmanディレクトリと.gitmodulesファイルをインデックスに追加してコミットできるようになります。
modmanを介してインストールされたこれらのモジュールを使用しているリポジトリを複製した後、単にサブモジュールを初期化して更新します。
git submodule init
git submodule update
PS私は現在、すべての新しいプロジェクトでGitをフルタイムで使用しているので、この見落としが二度と起こらないことを願っています。ごめんなさい ;)