Представляем .discourse-compatibility: зафиксированные версии плагинов и тем для старых версий Discourse

Круто, спасибо за объяснение.

Итак, я налил себе :wine_glass: и попробовал это с помощью плагина Custom Wizard.

Я проверил каждый тег по одному в обратном порядке, начиная с v2.6.0.beta1. Эти команды git оказались полезными:

git tag --list \\ например, git tag --list 'v2.5.0*'
git checkout tags/tag \\ например, git checkout tags/v2.5.0.beta7

Недолго пришлось искать тег, который не работал с текущей версией плагина: в v2.5.0.beta7 отсутствует discourse/app/components/d-textarea, который пытается импортировать кастомный мастер.

Таким образом, я нашел коммит в плагине, где был добавлен этот импорт, взял sha1 предыдущего коммита, переключился на него и протестировал (все работало отлично), а затем добавил это в .discourse-compatibility:

v2.5.0.beta7: 802d74bab2ebe19a106f75275342dc2e9cc6066a

Затем я отправил это в ветку с последним кодом плагина (ветка для тестирования, обычно не обязательная), и собрал заново тестовый сервер в контейнере Docker с этой веткой плагина и параметром version, установленным в v2.5.0.beta7.

Это не сработало, и тут меня осенило, что, конечно, задача rake plugin:pull_compatible_all не существует в v2.5.0.beta1, поэтому это не сработает ретроспективно (виноват :wine_glass:). И действительно, в логах запуска я вижу:

Неизвестно, как выполнить задачу 'plugin:pull_compatible_all' (см. список доступных задач с помощью `rake --tasks`)

Но это ли суть того, как вы представляете использование этого механизма?

Что касается required_version, я столкнулся с этим здесь, так как на тестовом сервере был установлен плагин discourse-legal-tools, у которого required_version равен v2.5.0, поэтому изначально он не работал с v2.5.0.beta7. Думаю, я перенесу этот плагин на новую систему. Я все еще вижу, что required_version может быть полезен для установки абсолютного базового уровня, как вы и говорили.

11 лайков