Перемещение плагина в собственный репозиторий
Содержание
Шаги извлечения плагина
Переместите код в собственный репозиторий
Следуйте руководству GitHub Выделение подкаталога в новый репозиторий. Это обеспечит сохранение истории коммитов.
Зависимости
Если плагин имеет зависимости от внешних библиотек, убедитесь, что эти зависимости управляются. Например, если требуется библиотека PHP, которая поставляется с ядром Elgg, обязательно добавьте её в composer.json этого плагина, так как вы не можете полагаться на то, что ядро Elgg сохранит библиотеку.
Закоммитьте код
В процессе следования руководству GitHub создаётся новый репозиторий для плагина, который вы пытаетесь переместить.
Поскольку уже была предпринята попытка извлечь некоторые плагины в собственные репозитории, возможно, репозиторий уже существует.
Если репозиторий для плагина не существовал, убедитесь, что вы создаёте его в рамках организации Elgg.
Если репозиторий уже существует, лучшим способом обновления кода будет запрос на слияние. Однако это, вероятно, не сработает из-за различий в том, как репозиторий был создан изначально (как обсуждается в этой проблеме GitHub).
Изначальные репозитории были созданы с помощью
git subtree split
а руководство требует
git filter-branch --prune-empty --subdirectory-filter
Это оставит различие в коммитах, которое GitHub не сможет разрешить. В этом случае вам придётся принудительно отправить изменения в существующий репозиторий плагина Elgg.
Предупреждение
Поскольку это перезапишет всю историю в репозитории плагина, убедитесь, что вы уверены в своих действиях.
Packagist
Убедитесь, что composer.json плагина содержит всю соответствующую информацию. Вот пример:
{
"name": "elgg/<name of the repository>",
"description": "<a description of the plugin>",
"type": "elgg-plugin",
"keywords": ["elgg", "plugin"],
"license": "GPL-2.0-only",
"support": {
"source": "https://github.com/elgg/<name of the repository>",
"issues": "https://github.com/elgg/<name of the repository>/issues"
},
"conflict": {
"elgg/elgg": "< <minimal Elgg required version>"
}
}
Правило conflict помогает предотвратить установку этого плагина в неподдерживаемой версии Elgg.
Добавьте репозиторий в Packagist, для существующих репозиториев это уже сделано. Убедитесь, что Packagist корректно обновлён всеми коммитами.
Пометьте релиз тегом
Чтобы Composer мог кэшировать плагин для более быстрой установки, в репозитории должен быть создан релиз. Вероятно, первая версия, которую нужно пометить тегом, — это та же версия, что указана в elgg-plugin.php или composer.json. После этого можно начинать разработку, следуя схеме версионирования Semver.
Переводы
Если переводы для плагина должны управляться через Transifex, добавьте плагин в Transifex.
Очистка ядра Elgg
Теперь, когда плагин перемещён в собственный репозиторий, пришло время создать запрос на слияние в ядро Elgg для удаления исходного кода.
Удалите плагин
Удалите папку
modдля плагинаНайдите имя плагина в ядре, чтобы обнаружить любые ссылки, которые также нужно удалить (например, старая документация, специальные тесты и т.д.)
Переводы
Поскольку плагин больше не является частью ядра Elgg, убедитесь, что конфигурация Transifex больше не содержит этот плагин.
Встроенные
Если плагин всё ещё поставляется в комплекте с релизом новой версии Elgg, обязательно добавьте плагин в composer.json.
Composer
Проверьте зависимости composer ядра, можно ли также удалить требования, специфичные для удалённого плагина, из зависимостей ядра.
Документация
Добавьте упоминание в документации Примечания к обновлению о том, что плагин был удалён из ядра Elgg.