web-dev-qa-db-ja.com

複数のバージョンのWebサイト(Git)の操作

私が作成したウェブサイトのようなメインテンプレートがあります。これにより、個人的な使用のために、必要なときにオンデマンドで新しいウェブサイトをすばやく展開して作成できます。

Gitリポジトリを使用する場合のベストプラクティスは、このプラクティスに適しているのでしょうか。私の目標は、たとえば将来的にすべてのサイトに一度に変更を加えたい場合、マスター(Repo)を変更するだけで、この変更を他のすべてのバージョンのテンプレートに適用できるようにすることです。

現在、テンプレートをBitBucketでプライベートにホストしています。リポジトリをgitcloneしてから、クローンに変更を加えるのが最善だと思います。次に、テンプレートに変更を加えるときに、サイトでgitpullを実行します。これは理想的なアプローチですか、それともこれを行うためのより良い方法がありますか?

1
ComputerLocus

ここで見たいのは、メインの開発テンプレート行から分岐した複数のリポジトリです。これにより、一元化されたテンプレートを維持しながら、ダウンストリームプロジェクトが自身の運命をもう少し制御できるようになります。たとえば、そのようにロールする必要がある場合は、コアにパッチを保持する必要があります。

このような戦略を半ダースほど使用しましたwordpressサイトで大きな効果があり、すべてのプロジェクトにワープドレスのセキュリティ更新プログラムを数分で展開できました。@ Aaronaughtをここにエコーします-ただし、あなたはコアテンプレートを開発する方法に非常に規律があり、これを実行するのは難しいでしょう。Wordpressは長年にわたってその規律を持っているので、そこでうまくいきました。

0
Wyatt Barnett

ソース管理の役割とソフトウェアアーキテクチャおよび適切な依存関係管理の役割を混同していると思います。

複数のサイトに展開できるようにしたいテンプレートシステムまたは単なるテンプレートがある場合は、特定の予測可能な方法でカスタマイズできるスタンドアロンフレームワークとして設計します。これは、WordPressのようなCMSがすでに機能している方法です。テンプレートを変更する必要があり、その変更をすべてのサイトに反映させたい場合は、フレームワークの新しいバージョンをリリースして、次のサイトを更新するだけです。それに基づいています。

リポジトリのクローン作成は、主に、複数の開発者が同じプロジェクトで作業できるようにするためのツールとして意図されています。いくつかの完全に異なるプロジェクトで作業するためにそのモデルを使用しようとすると、より遠い将来に多くの頭痛の種に遭遇するだろうと思います。実際のフレームワークによって提供されるカプセル化がなければ、基本的にそれらを再ロックするテンプレート化されたサイトに変更が加えられることはほぼ確実であり、それは常にリスクですが、ここでは変更と拡張の間のあいまいさ、明らかな違反によって悪化します オープンクローズ原則 。その原則はOOPに固有のものですが、一般的な概念はすべてのソフトウェアに適用されます。

ブランチはおそらく理解しやすいモデルになりますが、技術的にGitでは、ローカルリポジトリを追加するだけで、より厄介ではありますが、複数のリポジトリで同じことをすべて実行できます。リモコンとして。なぜそうしたいかはわかりませんが、可能です。

しかし、それは良いデザインではありません。サイトを保守しやすくするために、フレームワーク/テンプレート、コンテンツ/カスタマイズ、およびサイト展開の間で関心の分離を明確にする必要があります。それらすべてを混同しているように思われるので、ソース管理に完全に依存するリスクが高くバグが発生しやすいアプローチを採用する前に、再検討することをお勧めします。 Gitは素晴らしいですが、完璧ではありません。マージの競合が0の場合でも、両方のリポジトリの変更が重要な場合は、サイトが破損する可能性があります。

4
Aaronaught