2009-03-13 10 views
4

私は開発中のウェブサイトに関連するすべてのものにGitリポジトリを使用しています。リポジトリには、ドキュメント、モックアップ、元のレイヤードイメージなどのサイトに関連するすべてのファイルと、wwwサブディレクトリに入れたWebルートのものが格納されています。Gitを使って、サブモジュールを持つ外部プロジェクトをサブツリー化する最良の方法は何ですか?

私は、残りのプロジェクトで使用するように選択したCMSを統合したいと思っています。 CMSはGitで管理されているオープンソースプロジェクトです(GitHub上でホストされていれば問題ありません)。明らかにCMSはwwwサブディレクトリにある必要がありますが、そこには唯一のものではありません.CSSファイル、画像、CMSのテンプレートなどがあります。サブツリーのマージ戦略を使用して外部プロジェクトをリポジトリーに追加することを選択しました。ある時点で元のプロジェクトを変更して変更を元に戻したいので、私はGitHubからCMSリポジトリをクローンして、クローンからサブツリーのマージを完了しました。

問題は、外部プロジェクト(CMS用)に含めるサブモジュールがあることです。サブモジュールがメインプロジェクトに統合されていることを確認する最善の方法は何ですか?各サブモジュールに対してサブツリーマージを行う必要がありますか?

私はサブモジュールを変更したくないかもしれませんが、私が望むものは1つか2つあります。

答えて

2

Git submodulesには別のプロジェクトの特定のチェックアウトが含まれており、自動的に最新の状態に保たれません。したがって、CMSのサブモジュールを処理する最も簡単な方法は、リモートブランチとして提供されたリポジトリを追跡することです。こうすることで、サブモジュールが発生したプロジェクトの変更について情報を得ることができます。

サブツリーマージを使用すると、変更をCMSプロジェクトにサブミットすることがより複雑になります(恐らくfinickyが正しい単語です)。おそらく、多くの変更を提出することを期待している場合は、スクリプト化することができます。

+0

ありがとうございます、サブツリーマージのように思えます。私はリポジトリの複製されたバージョンからマージしているので、元のプロジェクトへの変更はすべてそこに行われ、簡単に寄付することができます。 しかし、CMSのリポジトリのサブモジュールはどのように処理しますか?再帰的に各サブをマージする必要がありますか? – Calrion

+0

あなたは正しいです、サブツリーのマージは行く方法です。各サブモジュールをサブツリー・マージする必要があります。サブモジュールをプロジェクトに結合する前にサブモジュールをクローンに入れることはできますが、それは将来更新するときにはもっとうまくいくでしょう。箇条書きを噛んで、各サブのサブツリーをマージします。 – Paul

+0

いいね、ありがとう。しかし、私はちょうど問題を発見しました...タグは(もちろん)CMSリポジトリからインポートされています。私は葛藤します。現在の考え方は、ファイルをインポートしてCMSの履歴を無視することです。 – Calrion

5

サブツリーマージを行う簡単な方法(また、後でスプリットバックを再度実行してパッチをアップストリームに送信する)は、実験用のgit subtreeツールを試すことです。

関連する問題