Нужно ли отслеживать устанавливаемые плагины гитом?
Количество ответов: 5В моем случае мне понадобилось установить два плагина: Subcourse (https://moodle.org/plugins/mod_subcourse) и Availability conditions (https://moodle.org/plugins/availability_role). В плагин Subcourse я вносил изменения, код второго плагина не трогал. С одной стороны получается, что код плагина Subcourse нужно отслеживать гитом, т.к. возможно в будущем в нем еще будут вноситься правки. С другой стороны опять же возникает вопрос: как тогда лучше поступить на тестовом и рабочем сайтах? Сначала установить плагин, а затем код плагина заменить своими изменениями, или же достаточно будет выложить сразу свои изменения? Просто я не знаю, что обычно происходит при установке плагинов, добавляются ли например поля в уже существующие таблицы БД или какие-либо файлы в moodledata. В случае с Subcourse только знаю, что плагин добавит свою таблицу в БД, т.е. ее в принципе, как я понимаю, в случае переноса кода без установки плагина можно будет просто отдельно импортировать.
Буду рад услышать любые советы, уточнения и замечания
Re: Нужно ли отслеживать устанавливаемые плагины гитом?
Тут на форуме много раз подобный вопрос задавали по изменению плагинов, но так и нет ответа.
Re: Нужно ли отслеживать устанавливаемые плагины гитом?
Если вы вносите правки в нестандартные плагины, то для последующего обновления плагинов с учетом ваших изменений, нужно плагин обслуживать тоже через собственный git-репозиторий. Например, для Subcourse это https://github.com/mudrd8mz/moodle-mod_subcourse
Re: Нужно ли отслеживать устанавливаемые плагины гитом?
Re: Нужно ли отслеживать устанавливаемые плагины гитом?
Пробовал в разное время разные варианты. Идеального варианта нет.
1. Можно создать приватный репозиторий на bitbacket, и сложить в репозиторий и код, и плагины. Добавление каждого плагина я делал отдельным коммитом, в котором указывал, что за плагин, и какая версия. Патчи к системе - отдельными коммитами. Удобства - на продакшне нужно просто вытянуть один репозиторий, и всё будет работать. Минусы - при каждом обновлении системы нужно делать rebase ваших плагинов поверх новой ветки. При этом нужно будет указывать диапазон именно ваших коммитов, автоматом git будет пытаться перенести всё, и будет много конфликтов. В случае необходимости обновить какой-то плагин, выкачивается новая его версия, записывается вместо старой, коммит этого плагина удаляется, создаётся новый. Такое обновление плагинов достаточно муторное. И основная проблема. Если вам надоест поддерживать проект, никто не сможет его простым способом обновить
2. Можно использовать git-репозиторий для каждого отдельного плагина, и прописать их как git submodule. Тогда, козалось бы, можно всё обновлять одной командой. На практике у меня так не вышло. Проблема в том, что в каждом плагине разработчик может по разному называть ветку, которая вам нужна. Где-то это всегда мастер, где-то отдельная ветка под каждую версию moodle. Таким образом, при обновлении версии moodle нужно по части плагинов поменять текущую ветку, чтобы снова можно было что-то стянуть. Для обновлений в рамках одной версии этот подход сойдет.
3. Сейчас я остановился на подходе, что у меня есть bash-скрипт прямо на сервере, где прописаны все плагины и репозитории, и ветка, которую там нужно тянуть. При обновлении на новую ветку я прохожусь по скрипту и меняю названия веток на соответствующие новой версии. Можно запустить скрипт у себя и предварительно погонять то же самое локально перед запуском на сервере.
cd /var/www
sudo -u www-data /usr/bin/php /var/www/admin/cli/maintenance.php --enable
git fetch origin
git checkout --force origin/MOODLE_39_STABLE
## Плагины
rm -rf blocks/configurable_reports
git clone --depth 1 https://github.com/jleyva/moodle-block_configurablereports blocks/configurable_reports
rm -rf mod/bigbluebuttonbn
git clone --depth 1 https://github.com/blindsidenetworks/moodle-mod_bigbluebuttonbn mod/bigbluebuttonbn --branch v2.3-stable
rm -rf mod/subcourse
git clone --depth 1 https://github.com/mudrd8mz/moodle-mod_subcourse mod/subcourse --branch v7.2.0
## Обновление
sudo -u www-data /usr/bin/php /var/www/admin/cli/upgrade.php --non-interactive
sudo -u www-data /usr/bin/php /var/www/admin/cli/maintenance.php --disable
Re: Нужно ли отслеживать устанавливаемые плагины гитом?
Хорошие плагины никогда не меняют чужие таблицы, а для всех данных создают свои. Плагины могут что-то писать в moodledata, но это вещи, которые должны делать скриптом установки, и не должны переноситься от разработчика на сервер, на проде скрипт установки должен сам всё создавать. Импортировать таблицы плагинов тоже не следует. Вы либо запускаете установку на сервере, и moodle сам всё создаёт. Либо запускаете всё локально, настраиваете, заполняете, потом переносите на сервер всю папку www, moodledata и всю бд единым дампом, который уже будет включать таблицы плагинов.