開発作業のためにDrupalサイトをgit管理下に設定しました。
これは、マスターのベアGITリポジトリを親とし、変更がさまざまなプロジェクト作業のgitクローンで行われ、マスターにプッシュバックされると、更新後のフックがすぐに単一のライブステージングWebサイトに変更をプッシュします(http:/ /staging.loc。)。特別なことは何もない、期待どおりに動作します。
また、サイト "@STAGING"をドラッシュエイリアスしました。時々、ステージングサイトから運用サーバーに変更をプロモートしたいと思います。
2つの比較的簡単な方法が思い浮かびます:
(1)ステージングサイトが安定しているように見える時点で、マスターリポジトリからのgitチェックアウトとして本番サイトを作成します。
(2)drush rsync
+ drush sql-sync
ステージングサイトから本番サイトへ。
どちらも機能させることができます。 (2)本質的にDrupal中心/認識であるという事実以外に-結局のところ、drushはDrupal固有のツールセットです-2つのアプローチの相対的なメリットは何ですか?
(2)よりも(1)を考慮する必要がある特別な理由はありますか?
どちらの場合でも、「すべて」は少なくとも1つのリビジョン管理インスタンスの下にあります...
私は両方のテクニックを使用しました。どちらも、@ stageでテストした同じファイルが@liveで終了することを保証するために使用できます。 rsyncの利点は、運用サーバーに余分なファイル(「.git」など)が作成されないことです。私はvpsにrsyncする傾向があり、私が所有するボックス(イントラネットサイトなど)でgitを使用します。
Drush rsyncを使用する際の問題は、複数のユーザーがサーバーに変更をプッシュしている場合です。
この例では、1人の人が変更をプッシュしているだけです。
開発者Aが彼女の変更をプッシュし、次に開発者Bが彼の変更をプッシュする場合、Gitで競合を解消するか、開発者Bに競合を解消させます。
私は実際に両方を使用しています。 svn/gitとrsyncには2つの異なる目的があります。 svn/gitはソース管理用で、rsync
およびsql-sync
は、ステージングと製品を効率的に同期するためのものです。 drush rsync @staging @prod
は、単純さの点で打ち負かすのが非常に難しく、ほとんどすべてのcontinuous Integration
コード品質の狂気/方法論をさらに詳しく知りたい場合の環境。
個人的には、バージョン管理、デプロイメント、さまざまなサーバーコードベースの同期にGitを使用し、次にrsyncを使用してユーザーファイルを移動/同期します(.gitignoreファイルに特定のパスを追加することで無視されます)。