Apresentando .discourse-compatibility: versões fixas de plugins/temas para versões mais antigas do Discourse

Legal, obrigado por explicar isso.

Então, servi-me uma taça de :wine_glass: e tentei com o Plugin Custom Wizard.

Verifiquei cada tag uma por uma, em ordem reversa, começando por v2.6.0.beta1. Encontrei esses comandos do git úteis:

git tag --list \\ por exemplo, git tag --list 'v2.5.0*'
git checkout tags/tag \\ por exemplo, git checkout tags/v2.5.0.beta7

Não demorou muito para encontrar uma tag que não funcionava com a versão atual do plugin: v2.5.0.beta7 não inclui discourse/app/components/d-textarea, que o Custom Wizard tenta importar.

Então, encontrei o commit no plugin que adicionou essa importação, peguei o sha1 do commit anterior, fiz o checkout e testei (funcionou perfeitamente), e adicionei isso ao arquivo .discourse-compatibility:

v2.5.0.beta7: 802d74bab2ebe19a106f75275342dc2e9cc6066a

Em seguida, fiz push para uma branch com o código mais recente do plugin (uma branch para testes, não necessária normalmente), e reconstruí um servidor de teste Dockerizado com essa branch do plugin e a version definida como v2.5.0.beta7.

Isso não funcionou. Depois, percebi que, claro, a tarefa rake plugin:pull_compatible_all não existe em v2.5.0.beta7, então isso não vai funcionar retroativamente (culpo o :wine_glass:). Com certeza, nos logs do launcher vejo:

Don't know how to build task 'plugin:pull_compatible_all' (See the list of available tasks with `rake --tasks`)

Mas é essa a ideia geral de como você imagina que isso seja usado?

Quanto ao required_version, encontrei isso aqui, pois o servidor de teste tinha o plugin discourse-legal-tools instalado, que possui um required_version de v2.5.0, então inicialmente falhou em v2.5.0.beta7. Acredito que vou transferir esse plugin para este novo sistema. Ainda vejo o required_version como útil para definir uma base absoluta, como você disse.

11 curtidas