Управление пользовательскими модулями в нескольких установках
У нас есть несколько пользовательских модулей, которые используются для нескольких сайтов. Они не могут быть выпущены в качестве добавленных модулей, например, потому что они специфичны для клиента, делают предположения, которые не работают для добавленных модулей и так далее.
Я знаю о следующих возможностях справиться с этим:
Скопируйте и вставьте их вокруг. Очевидно, что это затрудняет обновление модуля во всех установках.
Иметь один многосайтовый установка, но это не всегда возможно.
Используйте подмодули git, но они могут быть неприятными, их легко забыть обновить и не всегда поддерживаются (например, Pantheon)
Drush создает сценарии для извлечения из общего репозитория git. Для этого вам необходимо использовать drush make для всего сайта, и в настоящее время мы его не используем.
Http://drupal.org/project/fserver . Я еще не пробовал это, кто-нибудь знает, стабильно ли это достаточно? Описание проекта звучит не очень многообещающе, и версии 7.x не существует.
Что-нибудь еще/лучше? Что вы предпочитаете и почему?
5 answers
Подход Drush, как вы уже упоминали, - это версия, которую использует моя команда.
Даже если вы в настоящее время не используете drush make для своих сайтов, вам должно быть относительно просто перейти к этому рабочему процессу, если вы хотите, поскольку drush также предоставляет drush make-генерировать, который создаст файл make с существующего сайта. Таким образом, не нужно чувствовать, что это стоит того только для новых сайтов. :)
Если все сайты находятся на одном сервере, вы можете использовать symlink
для загрузки модулей из центрального места или rsync
, если вы имеете дело с несколькими серверами.
Это решит проблему распространения файлов, но вам все равно нужно запустить обновление. Это может быть автоматизировано с помощью drush
, а также простого скрипта, который вызывает обновление на каждом сайте, по одному.
Похоже, что вы почти во многом ориентируетесь на все решения. Когда я читаю это, сначала мне приходят в голову два других решения, такие как rsync
или symlink
, но опять же это неудобно поддерживать.
Затем я вспомнил об этом модуле Git Deploy, который на самом деле является хорошей комбинацией с подмодулями git.
Я еще не пробовал эту идею, но она может сработать или, по крайней мере, дать вам некоторое представление о том, как взломать ее, чтобы создать свою собственную систему.
Я использую отдельный репозиторий git для всех внесенных/пользовательских модулей, где каждый внесенный или пользовательский модуль находится в отдельной ветке (не в подмодуле).
Вот как здесь работает слияние git:
Мастер
<-- custom
<-- custom module 1
<-- custom module 2
<-- contrib
<-- contrib module 1
<-- contrib module 2
Мастер ->выпуск
И скрипт bash/drush для обновления ветвей
Я использую SVN вместо Git для хранения наших специально разработанных модулей. После того, как я зафиксирую изменения с локального хоста, я просто запускаю скрипт bash, который запускает команду "обновление svn" в предопределенных местоположениях сервера. Всякий раз, когда я развертываю модуль в новом месте, я обновляю сценарий bash. Это действительно простая настройка и работает без каких-либо хлопот.