Как объединить изменения базы данных Drupal - PullRequest
9 голосов
/ 09 октября 2009

В настоящее время мы используем SVN-репозиторий, чтобы обеспечить актуальность всех локальных сред. Однако разработка веб-сайта на Drupal несколько сложнее, поскольку любой пользовательский код, который вы пишете (например, код PHP, написанный для тела узла), сохраняется в БД, а изменения не распознаются рабочей копией SVN.

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

Любые предложения о том, как подойти к этому вопросу, приветствуются!

Ответы [ 4 ]

5 голосов
/ 10 октября 2009

К сожалению, развертывание / обновление базы данных является одним из слабых мест Drupals. См. этот вопрос и ответы , а также этот для получения некоторых предложений о том, как с этим справиться.

Что касается CCK, вы можете найти несколько подсказок здесь .

Что касается php-кода в содержании, я согласен с googletorp в том, что вам следует избегать этого. Однако, если по какой-то причине вам абсолютно необходимо это сделать, вы можете попытаться свести код к простому вызову функции. Таким образом, у вас будет сама функция в модуле (и это будет отслеживаться через SVN). Но тогда вы в любом случае откажетесь от необходимости встроенного кода ...

4 голосов
/ 10 октября 2009

Если вы помещаете php-код в вашу базу данных, значит, вы делаете это неправильно. Некоторые вещи находятся в базе данных, такие как представления и поля cck, а также некоторые настройки. Но если вы помещаете php-код в тело узла, вы создаете большую проблему обслуживания кода. Вы должны действительно использовать API и хуки вместо этого. Создавайте модули вместо уродливых хаков с помощью eval и т. Д.

2 голосов
/ 06 апреля 2011

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

Модули "Features" - это решение описанной проблемы Drupal, часто предоставляющей приятные функции, хотя и хранящей множество конфигураций и структуры в БД. Этот модуль позволяет вам захватить функцию и вывести ее в виде псевдомодуля (квалифицируется как модуль с .info и code-files и всеми). Вот как это работает:

  1. Выберите функциональность / функцию для экспорта
  2. Модуль анализирует модули, файлы, содержимое БД, необходимое для перестройки этой функции в другом месте
  3. Модуль создает псевдомодуль, содержащий инструкции из # 3, и выводит все (даже SQL для перестройки содержимого в БД) в пакет модулей (а также устанавливает зависимости для других необходимых модулей)
  4. Установите псевдомодуль на своем новом сайте и включите его
  5. Псевдомодуль копирует экспортируемую вами функцию, восстанавливая данные БД и все

И вы можете сказать своему боссу, что сделали все вручную с фокусировкой бритвы, чтобы избежать даже 1 ошибки;) Надеюсь, это поможет - http://drupal.org/project/features

1 голос
/ 09 октября 2009

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

Как насчет мастер-копии базы данных? Извлеките все таблицы, представления, sps и т. Д. В отдельные файлы, поместите их в svn и внесите изменения в отдельные объекты?

...