Перемещение плагина в собственный репозиторий

Шаги извлечения плагина

Переместите код в собственный репозиторий

Следуйте руководству 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.