6

開発、ステージング、および実稼働環境を使用してDrupalWebサイトを作成する機会があります。サイト間でコードの同期を維持することは、subversionを使用した簡単な作業です。それほど単純ではないのは、インストール間でデータベースデータ(スキーマだけでなく)への変更を伝播することです。

この理由は、Drupal開発者なら誰でも知っているでしょう。Drupalは、特定の構成設定をデータベースに保存します。特に、CCKフィールド、ビュー、および管理インターフェースを使用して動的に設定できるその他のモジュールに関連しています。スキーマを同期するだけでは不十分です。重要な情報もデータに含まれています。

私が探しているのは、これらのデータベースの変更を同期する方法です。これにより、1人の開発者がステージングサーバーでCCKフィールドの変更を行った場合、それらをローカルの開発環境に伝播して、より多くの作業を行い、最終的には本番環境にまで伝播できます。

これを行うツールはありますか?このようなプロジェクトで単一または複数の開発者を処理するためのプロセスは何ですか?

4

4 に答える 4

5

基本的なデータ同期の場合: mysqldump を使用して、夜間にすべてのデータを .sql ファイルにダンプします。次に、スクリプトはそれをバージョン管理システムにチェックインします。これは単純な bash スクリプトで作成されていますが、ほぼすべてのプラットフォームで同様のことができます...

もう少し読んだだけで、私の方法が役立つかどうかわかりません。SQL ダンプをマージする必要がなかったため、それがどれほど効果的に管理されているかについてコメントすることはできません。

変更 (スキーマ、新しいデータ) をステージング/運用サーバーにプッシュできるはずですが、変更を dev に戻すのは面倒かもしれません。私が言うように、マージは可能かもしれないし不可能かもしれません。わかりません。

于 2008-11-26T15:38:02.733 に答える
2

このあたりでは、プロトタイプとv.simpleノードタイプに使用するCCKをかなり降格しています。データベース内の「構成」を「コンテンツ」から分離しようとすることは、頭痛の種になる価値はありません。同期を維持するためのさまざまな方法がありますが、要するに、ファイル内にあるか、ファイルにエクスポートするオプションが提供されていない限り、問題が発生します。(追加のボーナスとして、ビューをファイルにエクスポートすることは、使用するたびにDBからビューを引き出すよりも少し速くなります。)

開発サーバー、ステージングサーバー、ライブサーバーについておっしゃっていますが、開発者がステージングで文書化されていない変更を行っている場合は、困惑します。ステージングをLiveと定期的に同期し、ステージングに加えられた変更はDevで行われ、Liveに移行する前にテストされているものだけであるという(常識的な)ポリシーを義務付けている場合は、より多くの成功を収めることができます。

于 2008-11-26T17:46:03.053 に答える
0

データベースのバージョン管理システムを使用します。このためには、データベース内の VersionInfo テーブルと、バージョン情報とともに xml 形式のすべての SQL ddl および dml クエリが必要です。これで、VersionInfo テーブルをチェックし、そのバージョンの後に追加された xml からのすべてのクエリを実行し、バージョンを versionInfo の最新のバージョンに更新する単純な .net ツールのみを使用できます。

于 2008-11-26T15:53:29.363 に答える