これは受け入れられた答えのある古い質問ですが、私はまだ別の質問の余地があると信じています。
まず、Featuresはこのタスクに適したツールではないと思い、代替ツールセットを提案することを前もって申し上げます。
チームコラボレーションの前提条件は、運用サーバーとは別のプロジェクトの開発バージョンをテストするためのステージングサーバーを持つことです。すべての開発コードはステージングサーバーでテストされ、安定していて展開の準備が整ったときにのみ運用サーバーにプッシュされます。ただし、開発者はステージングサーバーで直接作業しません。各開発者は自分のワークステーションで作業し、リビジョン管理とソースコード管理(SCM)を使用して、チームの他のメンバーと作業を調整します。
SCMシステムを使用すると、チームメンバーは互いに干渉することなく、コードの異なるブランチで並行して作業できます。テストのために、マスターブランチのみがステージングサーバーに展開されます。
本番、ステージング、ワークステーション間でデータベースをミラーリングするために、バックアップと移行という名前のモジュールがあり、共有ホスティングを使用していて、独自のデータベースを管理していない場合に使用できます。独自のデータベースサーバーを管理している場合、これがそのサーバー上の唯一のプロジェクトであり、mysqlを使用すると、次のコマンドのペアが便利です。
を投げ捨てます:
mysqldump --all-databases --opt -u root -p > DUMP.sql
復元するには:
mysql -u root -p < DUMP.sql
自分のデータベースがそのサーバー上の唯一のデータベースではない場合は、データベースのみをダンプするバージョンmysqldump
(またはmysqlを使用していない場合は同等)のスクリプトを作成します。
マスターである本番サーバー上のデータベースであるというポリシーを作成します。ステージングサーバーとワークステーションは、運用データベースのコピーである必要があり、その逆はできません。
Drupal 7はすべての管理設定をデータベースに保持していることに注意してください。つまり、運用サイト、ステージングサイト、およびワークステーション間でデータベースをミラーリングすると、機能なしでadmim設定が移行されます。
次に、コードを共有するために:
開発チームのメンバー間でコードを共有する標準的な方法は、SCMシステムを使用することです。Drupalはデフォルトでgitという名前のこのようなシステムで管理されます。
Gitでは、ローカルまたはリモートのリポジトリを使用できます。チームメンバーが同じ物理スペースにいる場合は、ステージングサーバーにローカルリポジトリを設定できます。それらが地理的に広がっている場合は、リモートリポジトリをセットアップできます。開発中のコードで他の人が読み取りアクセス権を持つことを気にしない場合、Drupal.orgのサンドボックスをリモートリポジトリとして使用できます。GitHubのプロジェクトエリアを使用することもできます。 GitHubはリポジトリであるだけでなく、コラボレーション用のツールをいくつか備えており、パブリックリポジトリとプライベートリポジトリの両方を使用できます。
基本的に、SCMシステムを使用すると、チームメンバは、チームメンバが共有するリポジトリからソースコードとドキュメントを取得し、作業を終えた後に再度プッシュインできます。SCMは変更を追跡し、競合がある場合(つまり、誰かが他のチームメンバーがコミットした変更を含まないコードをプッシュしようとする場合)、それを通知し、この競合を解決する方法を提案します。
通常、タスクがチームのメンバー間でどのように分割されるかについての誠実なコミュニケーションがあれば、競合はありません。しかし、SCMシステムが物事を追跡することで、ミスが発生した場合や通信が失敗した場合でも、競合を管理できるようになります。
git(GIYF)の使用を開始して使用するためのチュートリアルがたくさんあります。git-scmの WebサイトとScott ChaconのPro Gitの 2つをお勧めします。