Управление пользовательскими модулями в нескольких установках


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

Я знаю о следующих возможностях справиться с этим:

  • Скопируйте и вставьте их вокруг. Очевидно, что это затрудняет обновление модуля во всех установках.

  • Иметь один многосайтовый установка, но это не всегда возможно.

  • Используйте подмодули git, но они могут быть неприятными, их легко забыть обновить и не всегда поддерживаются (например, Pantheon)

  • Drush создает сценарии для извлечения из общего репозитория git. Для этого вам необходимо использовать drush make для всего сайта, и в настоящее время мы его не используем.

  • Http://drupal.org/project/fserver . Я еще не пробовал это, кто-нибудь знает, стабильно ли это достаточно? Описание проекта звучит не очень многообещающе, и версии 7.x не существует.

Что-нибудь еще/лучше? Что вы предпочитаете и почему?

Author: Berdir, 2012-05-30

5 answers

Подход Drush, как вы уже упоминали, - это версия, которую использует моя команда.

Даже если вы в настоящее время не используете drush make для своих сайтов, вам должно быть относительно просто перейти к этому рабочему процессу, если вы хотите, поскольку drush также предоставляет drush make-генерировать, который создаст файл make с существующего сайта. Таким образом, не нужно чувствовать, что это стоит того только для новых сайтов. :)

 10
Author: Letharion, 2012-06-04 18:24:27

Если все сайты находятся на одном сервере, вы можете использовать symlink для загрузки модулей из центрального места или rsync, если вы имеете дело с несколькими серверами.

Это решит проблему распространения файлов, но вам все равно нужно запустить обновление. Это может быть автоматизировано с помощью drush, а также простого скрипта, который вызывает обновление на каждом сайте, по одному.

 1
Author: Máté Gelei, 2012-06-04 16:59:52

Похоже, что вы почти во многом ориентируетесь на все решения. Когда я читаю это, сначала мне приходят в голову два других решения, такие как rsync или symlink, но опять же это неудобно поддерживать.

Затем я вспомнил об этом модуле Git Deploy, который на самом деле является хорошей комбинацией с подмодулями git.

Я еще не пробовал эту идею, но она может сработать или, по крайней мере, дать вам некоторое представление о том, как взломать ее, чтобы создать свою собственную систему.

 0
Author: yvan, 2012-06-01 08:36:31

Я использую отдельный репозиторий git для всех внесенных/пользовательских модулей, где каждый внесенный или пользовательский модуль находится в отдельной ветке (не в подмодуле).

Вот как здесь работает слияние git:

Мастер

      <-- custom
        <-- custom module 1
        <-- custom module 2    

      <-- contrib
        <-- contrib module 1
        <-- contrib module 2     

Мастер ->выпуск

И скрипт bash/drush для обновления ветвей

 0
Author: Refineo, 2012-06-01 10:56:57

Я использую SVN вместо Git для хранения наших специально разработанных модулей. После того, как я зафиксирую изменения с локального хоста, я просто запускаю скрипт bash, который запускает команду "обновление svn" в предопределенных местоположениях сервера. Всякий раз, когда я развертываю модуль в новом месте, я обновляю сценарий bash. Это действительно простая настройка и работает без каких-либо хлопот.

 0
Author: Ajinkya Kulkarni, 2012-06-05 19:50:19