web-dev-qa-db-ja.com

「drush rsync」対「git」を使用して開発->本番をステージングすることの利点

開発作業のために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つのリビジョン管理インスタンスの下にあります...

9
user6023

私は両方のテクニックを使用しました。どちらも、@ stageでテストした同じファイルが@liveで終了することを保証するために使用できます。 rsyncの利点は、運用サーバーに余分なファイル(「.git」など)が作成されないことです。私はvpsにrsyncする傾向があり、私が所有するボックス(イントラネットサイトなど)でgitを使用します。

3
greg_1_anderson

Drush rsyncを使用する際の問題は、複数のユーザーがサーバーに変更をプッシュしている場合です。

この例では、1人の人が変更をプッシュしているだけです。

開発者Aが彼女の変更をプッシュし、次に開発者Bが彼の変更をプッシュする場合、Gitで競合を解消するか、開発者Bに競合を解消させます。

1
Micheas Herman

私は実際に両方を使用しています。 svn/gitとrsyncには2つの異なる目的があります。 svn/gitはソース管理用で、rsyncおよびsql-syncは、ステージングと製品を効率的に同期するためのものです。 drush rsync @staging @prodは、単純さの点で打ち負かすのが非常に難しく、ほとんどすべてのcontinuous Integrationコード品質の狂気/方法論をさらに詳しく知りたい場合の環境。

1
stefgosselin

個人的には、バージョン管理、デプロイメント、さまざまなサーバーコードベースの同期にGitを使用し、次にrsyncを使用してユーザーファイルを移動/同期します(.gitignoreファイルに特定のパスを追加することで無視されます)。

1
danbohea