Каковы наилучшие практики для небольшой распределенной команды, которая будет работать над проектом Drupal?

после некоторых исследований мы решили работать с Drupal над нашим следующим проектом, и мы являемся распределенной командой.

поскольку Drupal хранит (на основе того, что мы видели до сих пор) все это содержимое в базе данных, как мы можем, как распределенная команда работать вместе над этим проектом? Каковы наилучшие методы, которые мы должны использовать?

мы думали об использовании общего сервера баз данных для этой задачи, но это просто уничтожит производительность, которая нам нужна, чтобы запустить этот проект. Есть предложения по этому поводу?

4 ответов


ответ Джереми (+1) уже довольно полный. Некоторые дополнительные более практичные советы следуют в без определенного порядка.

отказ от ответственности: это то, что работает для меня. У других могут быть другие предложения или даже несогласие. Если это так, я был бы очень рад услышать отзывы и альтернативные/лучшие предложения!

  1. сделать замечание, что каждый член команды должен начать его / ее сеанс путем обновления кода и базы данных. вы можете легко написать все это с помощью комбинации ssh и rsync команды. Я иногда создаю один скрипт (update-project.sh), который обновляет код из репозитория и загружает и импортирует последнюю БД с главного сервера сразу.

  2. не забудьте позвонить http://example.com/update.php каждый раз, когда вы обновляете код. выполните эту команду на промежуточном сайте, после каждой фиксации и на локальном машина после каждого обновления / вытягивания / проверки.

  3. сделайте любое изменение в БД через SQL-запрос, а не с помощью GUI. таким образом, вам просто нужно будет обернуть этот запрос в hook_update_N() реализация в вашем yourmodule.установить файл, и вы в целости и сохранности (если вы соблюдаете пункт #2!) [некоторые инструменты gui выводят эквивалент... это очень удобно!].

  4. всякий раз, когда это возможно, включать в hook_update_N() также изменения в настройках модуля. это не возможно все время. Когда это невозможно: см. пункты 7 и 8.

  5. при создании или изменении представления экспортируйте его в файл по завершении. тот же принцип, что и пункт №3, но применяется к представлениям. Этот подход, кстати, также имеет преимущество в обеспечении механизма отката в случае, если вы позже поймете, что совершили ошибку.

  6. использовать a главный репозиторий. не слишком много распределенной системы управления версиями. Pull и push ваш код всегда из одного и того же Центрального РЕПО.

  7. всегда включайте комментарий в фиксацию. особенно, если некоторые изменения кода изменяют некоторые функции / API / общую логику, обязательно включите предупреждение в сообщение фиксации. Подробную информацию можно поместить в журнал изменений.txt файл, если это необходимо.

  8. при совершении, немедленно воспроизвести на главной БД любые сделанные вручную изменения БД, которые вам не удалось включить в свой hook_update_N() реализация. это необходимо, если члены вашей команды начинают свои сеансы, как описано в #1.

  9. будьте избирательны в том, что вы ставите под управление версиями. например: исключить sites/default/settings.php но оцените, что (если что-нибудь вообще) нужно быть версионным из in sites/default/files (нужны ли изображения для разработки? и вложения?).

  10. есть некоторые полезные модули, которые могут помочь. как импорт/экспорт, что позволяет вам управлять в репозитории вашими CCK и представлениями или экспорт узле это позволяет экспортировать узлы, а затем импортировать их обратно в другую установку drupal.

  11. использовать модуль simpletest широко. что это хороший идея в любом случае, но при работе в команде большой идея: таким образом, вы будете уверены, что ваши изменения не нарушили чью-либо работу.

  12. удачи! я люблю работать в команде, и я считаю, надо стараться делать это каждый раз, когда он/она может. Это больше удовольствия, больше обучения и прежде всего... лучший код! :)

бонусный балл (не относится к разработке команды конкретно):

  • попробовать не использовать промежуточный сервер для вставки реального содержимого. в идеале вы должны начать создавать контент только тогда, когда код каким-то образом зависает или использует импортную маршрутизацию/модуль: drupal рассеивает информацию по таблицам много, и система крючков очень затрудняет отслеживание, какие модули сохранили какую информацию где: если вы разрабатываете на БД с реальными данными, вы неизбежно в конечном итоге нарушите некоторые таблицы в какой-то момент, и вы можете понять, что только за день до производство. :(

во-первых, лучшие практики.

вы всегда должны считать свою живую базу данных мастером. Вы можете использовать дампы баз данных, чтобы получить эту живую базу данных каждого члена вашей распределенной команды. Это гарантирует, что каждый член команды работает с той же базой.

вы должны использовать систему управления версиями, чтобы поделиться своим кодом, так что вы все работаете с одной и той же кодовой базой, но имеете контроль над тем, когда объединить код.

совместное использование a база данных между разработчиками и совместное использование кодовой базы между разработчиками вызовет путаницу и ее следует избегать.

теперь еще несколько мнений на основе мыслей

контент для вашего сайта должен быть создан и отредактирован на живом сервере.

вы должны выпустить код управляемым, повторяемым способом. В идеале у вас должен быть промежуточный сервер для тестирования кода, прежде чем он начнет работать.

самая сложная часть-это контент и настройки изменения. Я выступал за то, чтобы это было сделано в функциях обновления в фиктивном модуле. Однако иногда это трудно сделать, или в некоторых случаях изменения не могут быть сделаны надежно. Поэтому должен быть баланс, большинство изменений конфигурации должно быть сделано в коде, поэтому они повторяемы и могут быть легко распределены между разработчиками. Но для изменений конфигурации, которые нелегко закодировать или которые требуются вне окна выпуска, вы можете сделать их непосредственно на живом сервере. Этот важно то, что вы можете получить свой код и базу данных в согласованном состоянии через разработку и жить.


Simpletest-бесценный инструмент, поскольку разработчик, работающий над модулем "A", может запустить набор тестов и убедиться, что он не сломал модуль" B", а затем зафиксировать (например). См. Самый простой модуль и Selenium IDE. Разработка, основанная на тестировании, окупается несколькими способами. Разработчики получают уверенность и могут работать быстрее/лучше.

некоторое хорошее программное обеспечение для отслеживания проблем и / или управления проектами может централизовать всю информацию о проекте и облегчить связь между разработчики. Вики тоже хороша. Электронные письма между менеджерами проектов и отдельными разработчиками не держат всех в курсе и могут потеряться во времени, в шумной электронной среде.

Мне нравятся чаты разработчиков для распределенных проектов. Общения в режиме реального времени очень удобно. Некоторые элементы управления версиями могут записывать сообщения фиксации в чаты.

модуль backup_migrate удобен для захвата последнего приспособления DB с производственного сервера. Конечно, вы можете экспортировать через mysqldump и т. д., Но этот маленький модуль не является проблемой.

Проверьте doxygen тоже. Заставить разработчиков писать в этом формате. И обратите внимание на стандарты кодирования drupal. Существует модуль под названием "coder", чем можно его проверить.


Я вижу, что это старый пост в отношении управления конфигурацией Drupal. На данный момент в 2013 году я определенно рекомендую идти полным с модулем функций. Это позволяет разместить конфигурацию в коде и использовать управление версиями (я рекомендую git) для передачи файлов в ваших средах. Есть несколько предостережений, но это работает по большей части. Для предостережений, используя советы, упомянутые в принятом ответе, поможет смягчить путаницу