[spip-dev] Création de tags sur svn

Bonjour la liste,

est-ce que vous êtes pour l’utilisation de tags sur le svn ?

A mon avis ça a l’avantage de faciliter la maintenance, en s’assurant que quelqu’un qui récupère une version stable n’ait pas récupéré une version intermédiaire avec des modifs pas complètement testées.
Autre avantage : c’est cohérent avec les fichiers disponibles à http://trac.rezo.net/trac/spip/ et http://www.spip.net/fr_download

Un tag correspond à une version officielle et se distingue d’une branche qui est un espace de maintenance (et prépare la prochaine version stable officielle).

L’utilisation de tags non génériques (pour 2.07, 2.06, etc…) permettrait de s’assurer dans les tests qu’il n’y a pas de régression entre 2 versions stables officielles.

.Gilles

pourquoi pas oui, cela permet de mettre à jour par svn pour quelqu'un
qui veut suivre les versions stables

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 \
           svn://trac.rezo.net/spip/tag/last-stable-version \
      -m "Tagging the 2.08 release of SPIP."

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

pourquoi pas oui, cela permet de mettre à jour par svn pour quelqu'un
qui veut suivre les versions stables

j'ai pas trop compris le jeu, svn switch c'est compliqué, quand il
s'agit de changer de branche stable ?

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 \
svn://trac.rezo.net/spip/tag/last-stable-version \
-m "Tagging the 2.08 release of SPIP."

visiblement ça permet de coder en franglais :slight_smile:

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

et comme une fois sur deux on se rate, ça risque d'être encore plus amusant

-- Fil

pourquoi pas oui, cela permet de mettre à jour par svn pour quelqu'un
qui veut suivre les versions stables

j'ai pas trop compris le jeu, svn switch c'est compliqué, quand il
s'agit de changer de branche stable ?

Ca évite de rechercher un numéro de commit qui correspond à une version pour ensuite faire un update à la bonne révision.

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 \
          svn://trac.rezo.net/spip/tag/last-stable-version \
     -m "Tagging the 2.08 release of SPIP."

visiblement ça permet de coder en franglais :slight_smile:

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

et comme une fois sur deux on se rate, ça risque d'être encore plus amusant

ben moi je trouve ça bien de faire des tags.
Ca permet effectivement de remonter sur des versions stables identifiées en utilisant svn, et ça ne coute rien en espace de stockage.
Ca permettrait de remplacer avantageusement le tableau de

Cédric

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 \

svn://trac.rezo.net/spip/tag/last-stable-version \

-m « Tagging the 2.08 release of SPIP. »

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

Un tag (on utilise aussi le terme de « Jalon ») n’est rien d’autres qu’une branche qui n’est pas modifiée.
Pour la 2.09, il suffit de faire un « merge » entre la branche spip-2.0 et le tag latest-version

La commande serait alors

svn merge -r 13982:HEAD svn://trac.rezo.net/spip/branches/spip-2.0
svn://trac.rezo.net/spip/tag/last-stable-version
-m « Derniere version officielle : 2.09 »

2009/5/21 Fil <fil@rezo.net>

pourquoi pas oui, cela permet de mettre à jour par svn pour quelqu’un
qui veut suivre les versions stables

j’ai pas trop compris le jeu, svn switch c’est compliqué, quand il
s’agit de changer de branche stable ?

Je ne pense pas qu’il faille utiliser le svn switch pour distribuer la dernière version officielle.
Le fait d’avoir des tags pour les anciennes versions permet de rapidement répondre à la question
« J’ai spip 2.05 et j’ai tel problème… »
autrement que « ça marche chez moi » ou « tu n’as qu’à mettre ta version à jour – au risque de planter des plugin etc. »

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0
svn://trac.rezo.net/spip/tag/last-stable-version
-m « Tagging the 2.08 release of SPIP. »

visiblement ça permet de coder en franglais :slight_smile:

Arf, l’exemple était à la base pour la liste spip-en ^^
Donc oui, c’est bien pour du franglais :wink:

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

et comme une fois sur deux on se rate, ça risque d’être encore plus amusant

svn merge suffit : on reporte les modifs faites depuis la dernière version stable (et reportée sur branches/spip-2.0) sur la branche tags/latest-version (ou tags/derniere-version ou les puristes :stuck_out_tongue_winking_eye: )
Et en même temps on en profite pour créer un nouveau tag pour la 2.09

.Gilles

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

et comme une fois sur deux on se rate, ça risque d’être encore plus amusant

On a toujours la possibilité de vérifier des modifications qui vont être faites sans les porter sur le serveur svn :

svn merge --dry-run …

.Gilles

2009/5/21 Gilles VINCENT <gilles.vincent@gmail.com>

mais je suis perplexe pour la commande quand on sort la 2.0.9
il faut refaire une copie ?

et comme une fois sur deux on se rate, ça risque d’être encore plus amusant

J’en profite pour proposer un script qui automatise la mise à jour de la dernière version stable :

Préparatifs :
svn mkdir svn://trac.rezo.net/spip/tags -m « Creation de la branche des tags »

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 tags/version-officielle

Placer le fichier svn_merge.sh (ci-dessous) sur svn://trac.rezo.net/spip

svn_merge.sh :

  • Debut -----------------------

#!/bin/bash

Script de mise a jour du tag « version-officielle »

adapte de http://www.workhabit.com/labs/subversion-merge-easy-way-copying-changes-trunk-prod-tag

l’option « –dry-run » permet de controler la liste des fichiers modifies

DRYRUN=«  »
if [ « $1 » == « –dry-run » ]
then DRYRUN=« –dry-run »
fi

On recupere le numero de la derniere version officielle

PRODREV=$(svn info tags/version-officielle | grep « ^Last Changed Rev: » | awk ‹ {print $4} ›)

On reporte les differences qui ont eues lieu depuis

svn $DRYRUN merge -r $PRODREV:HEAD branches/spip-2.0 tags/version-officielle

  • Fin ---------------------------

Actuellement, ./svn_merge.sh --dry-run donne :

— Merging r13983 through r14025 into ‹ tags/version-officielle ›:
U tags/version-officielle/prive/transmettre/statistiques.html
U tags/version-officielle/prive/transmettre/statistiques_article.html
U tags/version-officielle/prive/formulaires/editer_rubrique.html
U tags/version-officielle/prive/rss/forums_public.html
U tags/version-officielle/ecrire/exec/articles_edit.php
U tags/version-officielle/ecrire/exec/articles_forum.php
U tags/version-officielle/ecrire/exec/articles.php
U tags/version-officielle/ecrire/exec/rubriques_edit.php
U tags/version-officielle/ecrire/exec/naviguer.php
U tags/version-officielle/ecrire/inc_version.php
U tags/version-officielle/ecrire/inc/plugin.php
U tags/version-officielle/ecrire/inc/minipres.php
U tags/version-officielle/ecrire/inc/utils.php
U tags/version-officielle/ecrire/inc/filtres_images.php
U tags/version-officielle/ecrire/inc/filtres.php
U tags/version-officielle/ecrire/inc/presentation.php
U tags/version-officielle/ecrire/public/stats.php
U tags/version-officielle/ecrire/public/compiler.php
U tags/version-officielle/ecrire/public/balises.php
U tags/version-officielle/ecrire/public/interfaces.php
U tags/version-officielle/ecrire/public/phraser_html.php

.Gilles

et comme une fois sur deux on se rate, ça risque d'être encore plus
amusant

J'en profite pour proposer un script qui automatise la mise à jour de la
dernière version stable :

Ah ça c'est plus parlant anéfé, je suis "pour" aussi, donc. Par contre
si on pouvait appeler ça "stable" et pas "version-officielle" ça me
ferait plaisir :slight_smile: Ou alors il faut la limousine et les gendarmes à
moto.

-- Fil

et derniere version , ou version courante ?

je ne savais pas que les commits sur la branche stable la rendaient instable ?

je ne savais pas que les commits sur la branche stable la rendaient instable ?

normalement non mais les récents déboires sur <INCLURE> / #INCLURE
montrent qu'il arrive qu'on déroge à cette règle

-- Fil

Ah ça c’est plus parlant anéfé, je suis « pour » aussi, donc. Par contre
si on pouvait appeler ça « stable » et pas « version-officielle »

je ne savais pas que les commits sur la branche stable la rendaient instable ?

Pour ma part, voilà comment je perçois l’espace de dev.

  • La branche « stable » est, telle que c’est utilisé pour SPIP, la branche qui prépare la prochaine version stable.
  • La branche principale est le laboratoire dont les modifs les plus intéressantes, une fois mûres, sont intégrées dans la branche stable.
  • Mais il n’y a pas de contrainte de stabilité réelle dans la branche « stable » : il y en a lorsqu’on sort une nouvelle version majeure (un peut moins pour une version mineure).

La pratique observée a toujours été, je concède, de garder le maximum de stabilité sur la branche stable qui est souvent utilisée en prod. Merci aux développeurs qui ont maintenu cette branche optimale !

.Gilles

Ah ça c’est plus parlant anéfé, je suis « pour » aussi, donc. Par contre
si on pouvait appeler ça « stable » et pas « version-officielle »

je ne savais pas que les commits sur la branche stable la rendaient instable ?

Pour ma part, voilà comment je perçois l’espace de dev.

  • La branche « stable » est, telle que c’est utilisé pour SPIP, la branche qui prépare la prochaine version stable.

ben non la prochaine stable se prepare dans dev, la branche « stable » est là pour les corrections de la version majeure à laquelle eslle est associée (2.0) actuellement, les commits fait dessus ne doivent pas la déstabiliser

  • La branche principale est le laboratoire dont les modifs les plus intéressantes, une fois mûres, sont intégrées dans la branche stable.

C’est pas le cas actuellement, il me semble. Il y a des branches qui évoluent par version « majeure », la plus vivante est la .0 mais il ya tjs des correctifs sur la branche 1.9 (et quelques gros patch de secu meme sur la 1.8)

Ca évite de tout casser quand il ya des rupture de compatibilite entre autre

Les branches accueillent les releases mineures de correctif, quand il y a une majeure (grosses evols/ rupture …) ou crée une nouvelle branche à la sortie de la version pour la maintenir.

Les branches sont donc potentiellment tjs stables ( aux tests pres … ) et le tronc sert aux évolutions.

Bonjour,

suite à certains problèmes de stabilité de la branche 2.0, je propose que l’on mette en place le mécanisme de tags.
Les utilisateurs pourraient alors via SVN installer une VRAI version 2.0.8, et non pas une version toujours en mouvement.


svn copy -r 13982 svn://[trac.rezo.net/spip/branches/spip-2.0](http://trac.rezo.net/spip/branches/spip-2.0) \
           svn://[trac.rezo.net/spip/tags/spip-2.08](http://trac.rezo.net/spip/tags/spip-2.08) \

      -m "Version officielle 2.0.8"

Au risque de me répéter, j’ai l’impression qu’on reproduit encore, à plus petite échelle, certaines erreurs de la famille 1.9, en ne séparant pas la notion de “distribution officielle” de la notion de branche de maintenance et/ou de développement.

Il me semble qu’en temps normal, un cycle de développement est constitué de phase de codage, de tests, d’expérimentations, des tests et de stabilisation. Entre 2 phases de stabilisation, des distributions mineures sortent pour corriger des bugs importants (comme c’était le cas pour la 2.0.8). Mais des distrib. mineures ne sont pas sensées être aussi stables que des distrib. majeures car la phase de stabilisation n’a pas été amorcée (avec des versions de pré-sorties de type “beta”, etc…)

Alors, ces tags, je les mets ou pas ?

.Gilles

Hello,
moi je suis plutôt content du process de dev actuel des branches 2.0 et 2.1 :
on fait des gros devs lourd dans la 2.1, et au fur et à mesure de la stabilisation, on reporte ce qui est possible en branche 2.0.
Quand je dis ce qui est possible, cela sous entend tout ce qui n’entraine pas de regression fonctionnelle ou de rupture de compatibilité.

Du coup on a une branche 2.0 qui vit et profite des améliorations, contrairement à ce qui se passait au moment du dev 2.0/1.9x ou les deux branches avaient tellement divergées qu’il etait quasi impossible de faire de la sorte.

Cela fonctionne bien aussi avec la sortie des fonctions en plugins, qui profitent alors d’enrichissement fonctionnel et de nettoyage de code, et peuvent du coup être utilisées sur la 2.0.x le plus souvent.

Pour améliorer la lisibilité sur le SVN, pas de problème pour moi pour faire des tags correspondants aux releases. On avait dit que le terme ‹ officiel › n’etait pas nécessaire…
Cédric

2009/6/8 cedric.morin@yterium.com <cedric.morin@yterium.com>

Du coup on a une branche 2.0 qui vit et profite des améliorations, contrairement à ce qui se passait au moment du dev 2.0/1.9x ou les deux branches avaient tellement divergées qu’il etait quasi impossible de faire de la sorte.

oui, je suis d’accord sur le fait que la proximité entre la version de dev et la branche 2.0 est un réel avantage.
Mais le nombre de reports entre la branche de dev et la branche 2.0 me semble trop important pour que la branche 2.0 ne soit qu’une branche de maintenance : des tas de fonctionnalités lui sont rajoutées au fur et à mesure et demandent à être testées voire améliorées (pourquoi pas développées directement dans la branche 2.0 si la branche de dev s’oriente vers un autre choix).

Cela fonctionne bien aussi avec la sortie des fonctions en plugins, qui profitent alors d’enrichissement fonctionnel et de nettoyage de code, et peuvent du coup être utilisées sur la 2.0.x le plus souvent.

Cela peut impacter les plugins qui sont, eux aussi, pas très structurés en ce moment. Si j’installe une version X d’un plugin qui va dépendre d’une version Y de la branche 2.0, post-2.0.8, je n’ai pas de garantie qu’une autre installation, avec une version 2.0.8 de base (la version[13982]) fonctionne de la même manière.

Il faut distinguer une 2.0.8+dev d’une 2.0.8 sinon on a pas de repère possible.

Ce problème de développement « au fil de l’eau » se produit également avec les plugins, mais là c’est plus compréhensible vu la culture de SPIP ;).

Pour améliorer la lisibilité sur le SVN, pas de problème pour moi pour faire des tags correspondants aux releases. On avait dit que le terme ‹ officiel › n’etait pas nécessaire…

Pas de problème.
Je propose donc simplement comme libellé : « Version 2.0.8 »

.Gilles

Oui c’est normal. Mais il faut considérer cela comme du dev.
Typiquement, sur la mediathèque, la version svn du plugin ne marche actuellement qu’avec la version svn de la branche 2.0

Du coup j’ai mis un sabot sur le zip pour que le paquet tourne avec la version 2.0.8, et je ne releaserai la nouvelle version de la mediatheque que quand la 2.0.9 sera dispo.
Mais au passage, le dev m’a permis de synchro certaines fonctionnalités entre la branche 2.1 et 2.0, de les debug, et ainsi d’améliorer aussi la branche 2.1.

Cédric

Mais au passage, le dev m’a permis de synchro certaines fonctionnalités entre la branche 2.1 et 2.0, de les debug, et ainsi d’améliorer aussi la branche 2.1.

Oui, et je suis admiratif devant le travail que tu as réalisé pour faire évoluer les deux branches, avec les autres développeurs de la core-team.

.Gilles

Les utilisateurs pourraient alors via SVN installer une VRAI version 2.0.8,
et non pas une version toujours en mouvement.

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0 \
           svn://trac.rezo.net/spip/tags/spip-2.08 \
      -m "Version 2.0.8"

au fait je sais plus si je l'ai dit ou si cela a été dit ...

pourquoi pas un tag spip-2-stable

svn copy -r 13982 svn://trac.rezo.net/spip/branches/spip-2.0
svn://trac.rezo.net/spip/tags/spip-2-stable

du coup quelqu'un se branche sur svn://trac.rezo.net/spip/tags/spip-2-stable
et à la sortie de la 2.0.9 un coup de svn update suffit car on aura fait un
svn copy -r xxxxxsvn://trac.rezo.net/spip/branches/spip-2.0
svn://trac.rezo.net/spip/tags/spip-2-stable

P.S : à noter qu'en cas de besoin il y a toujours
http://files.spip.org/spip/archives/?C=M;O=D

Je suis d'accord avec Gilles, cette abondance pose problème mais pour une raison qui n'a pas été dite: la doc. On a un article qui décrit ce qu'est SPIP 2.0, et la version qui s'appellera à terme la 2.0.9 se met à avoir des fonctionnalités nouvelles qui ne sont décrites nulle part. Evidemment les plugins peuvent s'en sortir avec le numéro SVN, mais ça rend la doc in-maintenable.

En fait cette dérive a pour origine que certains bugs sont plus facilement corrigés en généralisant quelque chose, ce qui provoque une nouvelle fonctionnalité, et je confesse qu'il m'est arrivé d'envoyer des fonctionnalités nouvelles sur la "stable" suite à ce situation. Mais je crois vraiment que çà devrait rester l'exception.

Committo,Ergo:Sum