Хотя это старый вопрос с принятым ответом, я считаю, что еще есть место для другого.
Во-первых, позвольте мне сразу сказать, что я не считаю, что функции - это правильный инструмент для этой задачи, и предложу альтернативный набор инструментов.
Обязательным условием для совместной работы в команде является наличие промежуточного сервера для тестирования версий разработки проекта, отдельного от вашего рабочего сервера. Весь код разработки тестируется на промежуточном сервере и отправляется на рабочий сервер только тогда, когда он стабилен и готов к развертыванию. Однако разработчики не работают напрямую с промежуточным сервером. Каждый разработчик работает на своей рабочей станции, используя систему контроля версий и управления исходным кодом (SCM), чтобы координировать свою работу с остальной частью команды.
Система SCM позволяет членам группы работать параллельно над разными ветвями кода, не мешая друг другу. Только мастер филиал развернут на промежуточном сервере для целей тестирования.
Для зеркального отображения базы данных между рабочей, промежуточной и рабочей станциями существует модуль с именем « Резервное копирование и миграция», который можно использовать, если вы используете общий хостинг и не управляете собственной базой данных. Если вы управляете своим собственным сервером базы данных, это единственный проект на этом сервере, и вы используете mysql , подойдет следующая пара команд:
Выгрузить:
mysqldump --all-databases --opt -u root -p > DUMP.sql
Для восстановления:
mysql -u root -p < DUMP.sql
Если ваша база данных не единственная на этом сервере, запишите какую-нибудь версию mysqldump
(или эквивалентную, если вы не используете mysql ), которая создает дамп только ваших баз данных.
Создайте политику, что это база данных на рабочем сервере, которая является главной. Промежуточный сервер и рабочие станции должны быть копией производственной базы данных, а не наоборот.
Обратите внимание, что Drupal 7 сохраняет все настройки администратора в базе данных. Это означает, что при зеркалировании базы данных между рабочим сайтом, промежуточным сайтом и рабочими станциями параметры миграции будут перенесены без компонентов .
Теперь, чтобы поделиться кодом:
Стандартный способ обмена кодом между членами команды разработчиков - использование системы SCM. Drupal по умолчанию управляется с помощью такой системы, которая называется git .
Git позволяет использовать локальные или удаленные репозитории. Если члены команды находятся в одном физическом пространстве, вы можете настроить локальный репозиторий на своем промежуточном сервере. Если они распространены географически, вы можете настроить удаленное хранилище. Если вы не против того, чтобы другие имели доступ для чтения к вашему разрабатываемому коду, вы можете использовать песочницу на Drupal.org в качестве удаленного хранилища. Вы также можете использовать область проекта на GitHub . GitHub - это не только репозиторий, он поставляется с некоторыми инструментами для совместной работы и позволяет использовать как публичные, так и частные репозитории.
По сути, система SCM позволяет членам группы извлекать исходный код и документацию из репозитория, доступного для членов группы, и возвращать его обратно после работы над ним. SCM отслеживает изменения и, если возникает конфликт (т. Е. Кто-то пытается выдвинуть код, который не содержит изменений, внесенных другим членом команды), он сообщит вам и также предложит способ разрешения этого конфликта.
Как правило, при некотором сердечном общении о том, как задачи распределяются между членами команды, не возникает никаких конфликтов. Но с помощью системы SCM, отслеживающей ситуацию, конфликты становятся управляемыми, даже если допущены ошибки или сбой связи.
Существует множество руководств по началу работы с git (GIYF) и их использованию . Два, которые я рекомендую: сайт git-scm и Pro Git от Scott Chacon.