1

だから私たちは私たちを持っていますtemplate_site

これは基本的に、私たちが構築するすべてのサイトのフロント エンド ベースです。

私たちは私たちを持っていますcms

これはサイトのバックエンドであり、存在しますが、template_site/cms独自のリポジトリにあり、template_site.

存在するファイルを持つモジュールがあります

template_site/(all over the place)cms/modules/(name of module)

基本的に、私たちが望んでいるのは、独自のレポ内に The 、独自のレポ内に
Theを持つことです。そして、作成するすべてのモジュールについて、別のリポジトリからのブランチとしてそれを持っています。ただし、そのリポジトリには、モジュールに固有のファイルとファイルへの変更のみを含める必要があるため、モジュールを既存のプロジェクトにプルして、それらのファイルのみに影響を与えることができます。cms
template_sitecms_modules

問題は、基本的にすべてのセクションがリンクされていることですが、モジュールの作業中に への変更をtemplate_site取り込み、さらに への変更も取り込めるようにしたいと考えています。cms

このセットアップの理由は、作成するサイトごとにtemplate_site独自のリポジトリにクローンを作成し、必要に応じてカスタマイズできるようにするためです。

どうすればこれを行うことができますか?

または、この種のセットアップのためのより良いワークフローはありますか?

これに適した設定として私が見ることができるのは次のとおりです。

cms_modulesリポジトリを「スーパー プロジェクト」として持つ
マスター ブランチにモジュールが含まれていない。サブモジュールとして
追加cmsサブモジュールとして
追加template_site

cms_modulesそうすれば、レポを独自のレポジトリに複製し、それを処理して、template_site必要な場合にのみサブモジュールを初期化できます。しかし、ここで私が見ることができる唯一の問題は、cms_modulesコピー (新しいサイトの場合) またはブランチ (新しいモジュールの場合) がそのルートで新しいファイルを追跡するだけでなく、サブモジュール内の変更または新しいファイルを追跡する代わりに追跡することです。それぞれのリポジトリがそれらを追跡します。

次に、template_siteまたはcmsリポジトリに更新がある場合は、それぞれのディレクトリに cd して更新を発行できますが、変更したファイルのマージはcms_modules、それぞれのサブモジュールではなくリポジトリに追跡されるようにする必要があります。

別のモジュールを追加したい場合は、そのモジュールのブランチにマージするだけです。

どうすればそれを設定できますか?

4

1 に答える 1

0

リポジトリ構造: git submodules自分の管理下にない外部リポジトリを使用している状況に最適なように設計されているようです。アイデアは、現在のリポジトリ内に別のリポジトリを移植することですが、トリックの一部は、外部リポジトリのブランチの状態にサブモジュールの「現在のバージョン」のコミット ハッシュが含まれることです。つまり、外側のツリーは、外側のツリーへの追加のコミットがなければ、内側のツリーの進行状況を示しません。これは、外部の場合には非常に理にかなっています-私が使用しているライブラリでの開発のためにビルドが壊れることは望ましくありません-しかし、あなたの場合は多くの簿記のようです.

サブモジュールをより直感的に使用するには、サイトごとにまったく新しいリポジトリを作成し、そのcms適切なサブモジュールにする必要があります。このように、各サイトは CMS フォルダーの異なるスナップショットとやり取りすることができ、準備が整ったときにのみ新しいバージョンをプッシュすることができます。

リポジトリの数:あなたのデータは実際にはあなたの管理下にあるため、1 つのリポジトリを持つことが最も理にかなっています。たとえば、ディレクトリの 1 つが十分な大きさ (メガバイト単位) である場合や、同僚のサブセットがいずれか一方のみにアクセスできるようにする必要がある場合は、個別のリポジトリについて適切な議論を行うことができますが、それ以外の場合は、保持する利点はほとんどありません。リポジトリのパーツが分離されています。

モジュールごとのブランチ:各ブランチにまったく異なるコンテンツを配置しないことを推奨するスタック オーバーフローの回答に同意する傾向があります。その状態では、マージ コミットを自動的にまたは頻繁に作成しない限り、複数のモジュール (またはすべてのモジュール) を含む単一のブランチは存在しません。git には、そのように動作することを妨げるものは何もありませんが、それは典型的ではありません。

私の好みのブランチ構造:masterすべてのモジュールとすべてのサイトを含むブランチを作成します。モジュールまたはサイトごとにブランチを作成して開発を容易にすることはできますが、コードが適切に見えたら、ブランチをマスターにマージします。しばらくモジュールに触れていませんか? ブランチを削除します。後でいつでも再作成できます。

それが役立つことを願っています!

于 2012-09-19T00:03:16.573 に答える