dépendance des plugin envers SPIP, choix de version avec la branche 1.9.3
Bonjour ,
bonne années à ceux auquels je n'ai pas adressé de voeux,
L'année dernière (2007) a été ajoutée la possibilité d'ajouter, dans la
déclaration plugin.xml (voir http://www.spip-contrib.net/Plugin-xml ) de
chaque plugin, un élément de gestion des dépendance (avec
<necessite> on peut spécifier des versions de plugin et de SPIP
minimale et maximale). En particulier la version de SPIP requise (voir
http://trac.rezo.net/trac/spip/changeset/8961
http://trac.rezo.net/trac/spip/changeset/8977
http://trac.rezo.net/trac/spip/changeset/9023 )
Le système de gestion des dépendances des plugins envers les
versions de SPIP doit permettre d'indiquer une version minimale et
maximale (et le reste du cahier des charges).
critères supplémentaires personnels
- utilise version_compare
( http://fr.php.net/manual/fr/function.version-compare.php )
- utilise une valeur au format conseillé par la documentation de
version_compare ( http://trac.rezo.net/trac/spip/ticket/687 )
- utilise le même numéro de version que celui affiché dans la partie
privée ou dans http://www.spip.net/fr_rubrique155.html
- limiter le nombre de variables de version différentes
( http://trac.rezo.net/trac/spip/ticket/972 )
Pour la version de SPIP c'est $spip_version_code qui est pris pour
comparaison. $spip_version_code a été introduit par
http://trac.rezo.net/trac/spip/changeset/7071#file3 17/08/2006
Le code chargé des comparaisons, dans
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/plugin.php ,
a évolué pour utiliser plugin_version_compatible
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/plugin.php#L88
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/plugin.php#plugin_version_compatible
et version_compare
http://trac.rezo.net/trac/spip/changeset/8961
http://trac.rezo.net/trac/spip/changeset/8977
http://trac.rezo.net/trac/spip/changeset/9023 , ce qui rempli une de mes attentes.
La variable $spip_version_code est passée progressivement à un
format plus proche de « m.n.o.p », avec séparation interne, puis
passage en chaine de caractères, se rapprochant donc du format de
numérotation générale de SPIP.
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php
http://trac.rezo.net/trac/spip/log/spip/ecrire/inc_version.php
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=7071#L226 17/08/2006
$spip_version = 1.917;
$spip_version_affichee = '1.9';
$spip_version_code=1.9001;
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=8768#L281 22/02/2007
$spip_version = 1.926;
$spip_version_affichee = '1.9.3 dev';
$spip_version_code = 1.9207;
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=8963#L283 01/04/2007
$spip_version = 1.935;
$spip_version_affichee = '1.9.3 dev';
$spip_version_code = 1.9250;
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=9023#L283 12/04/2007
$spip_version = 1.935;
$spip_version_affichee = '1.9.3 dev';
$spip_version_code = '1.9250';
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=11042#L292 04/01/2008
$spip_version = 11042;
$spip_sql_version = 1;
$spip_version_affichee = '1.9.3 dev';
$spip_version_code = '1.9303';
Cependant les dernières modifications
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=11056#L292 10/01/2008
$spip_version_code = 11056;
$spip_version = 11042;
$spip_sql_version = 1;
$spip_version_affichee = '1.9.3 dev';
http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc_version.php?rev=11088#L292 17/01/2008
$spip_version_code = 11056;
$spip_version = 11088;
$spip_sql_version = 1;
$spip_version_affichee = '1.9.3 dev';
éloignent le code de mes souhaits (sans parler des réglages des
plugins qui ne fonctionnent plus pour demander une version précise
de SPIP, car c'est normal pour une version en développement).
Pire, il n'y a plus de gestion des branches. En effet, supposons que,
dans trois mois, soit publiée une version de SPIP 1.9.3, avec
$spip_version_code = 15000, suivie d'une version 1.9.4 avec
$spip_version_code = 16001. Les plugins nécessitant la version 1.9.4
mettent <necessite id='spip' version='[16001;]' />. Supposons
qu'ensuite des corrections soient faites dans la branche 1.9.3, avec
publication d'une version 1.9.3.1 (ou 1.9.3a si vous préférez) à
$spip_version_code = 16101. Un plugin demandant 1.9.4 minimum,
donc 16001, sera alors accepté par le code de inc/plugin.php de cette
dernière (chronologiquement) version.
Sans forcément reprendre aveuglement mes propositions
( http://trac.rezo.net/trac/spip/ticket/687
et http://trac.rezo.net/trac/spip/ticket/972 ), je vous prie tout de même
d'améliorer l'existant. Le format de variable de version de SPIP à
utiliser dans <necessite id='spip' version='[16001;]' /> n'est pas encore
officiel pour une version stable de SPIP, donc les plugins peuvent
encore changer, mais je ne suis pas certain que ce soit aussi simple
une fois une version publiée et que des plugins commenceront à
utiliser la commande par des personnes qui suivent le développement
de SPIP de moins près. Si il pouvoit y avoir un format stable et
pérenne serait un plus.
Notes concernant le format 1.m.n :
- la fonction version_compare
http://fr.php.net/manual/fr/function.version-compare.php permet
d'indiquer des pré-version avec « alpha » et « beta »; « 1.9.3 alpha 1 »
est possible est sera distinct de « 1.9.3 alpha 2 s;
- si il est possible d'incrémenter $spip_version_code (au format actuel
ou au format d'il y a un mois) très souvent, alors il me semble possible
d'incrémenter 1.9.3 alpha 1.1, alpha 1.2 (etc.) aussi.
- les versions publiées pourraient être numérotées avec
- version.0.j pour les modifications du code
- version.1 à la première publication de version
( http://trac.rezo.net/trac/spip/#Anciennesversions )
- et ainsi de suite version.1.j ... version.2 ... version.2.j ... version.i.j
)