[spip-dev] Les branches spip-3-stable

Hello,

je fais le point sur les branches spip-3-stable du Repository

Historiquement la branche
https://core.spip.net/projects/spip/repository/show/branches/spip-3-stable

pointait sur la dernière version 3 stable, ce qui permettait de se brancher dessus en SVN et de up en étant sur d’avoir la dernière release à jour mais sans les commits de dev qui parfois pouvaient être buggués

Quand on a release la 3.1 on s’est dit « ah oui mais attention, si on met la derniere v3.1 sur cette branche il va y avoir des utilisateurs qui up par mégarde de 3.0 à 3.1 »
et du coup on a créé une branche 3.1-stable :

https://core.spip.net/projects/spip/repository/show/branches/spip-3.1-stable

Du coup la branche spip-3-stable est restée en 3.0, version qui n’est plus maintenue.
Par contre lors de la release 3.2-stable on a pas créé de branche

Je propose donc :

* de créer une branche spip-3.2-stable
* de mettre à jour la branche spip-3.1-stable
* de rebrancher spip-3-stable sur la dernière v3.x stable, à savoir la 3.2 maintenant

Quand on sortira une 3.3 on fera une branche spip-3.3-stable et la branche spip-3-stable basculera aussi sur la 3.3
(et on fait l’impasse sur une spip-3.0-stable puisqu’il n’y a plus de maintenance ni de release 3.0 en principe)

Comme si tu veux être dans la dernière 3.x tu prends la branche spip-3.x-stable, si tu veux etre dans la dernièe 3, quelle que soit la sous-version, tu prends la branche spip-3-stable.

Des remarques, des objections, des avis, des bisous ?

Je propose donc :
* de créer une branche spip-3.2-stable
* de mettre à jour la branche spip-3.1-stable
* de rebrancher spip-3-stable sur la dernière v3.x stable, à savoir la 3.2 maintenant
Quand on sortira une 3.3 on fera une branche spip-3.3-stable et la branche spip-3-stable basculera aussi sur la 3.3
(et on fait l’impasse sur une spip-3.0-stable puisqu’il n’y a plus de maintenance ni de release 3.0 en principe)
Comme si tu veux être dans la dernière 3.x tu prends la branche spip-3.x-stable, si tu veux etre dans la dernièe 3, quelle que soit la sous-version, tu prends la branche spip-3-stable.

Des remarques,

c'est clair

des objections,

non

> des avis,
c'est bien

des bisous ?

plein !

JL

Salut,

Je me permet une objection ! :wink:

Ce point pourrait être l’occasion de prendre la décision d’arrêter ce procédé.

Créer des branches “stables” copies d’autres branches, on le voit, c’est source d’oubli.

Mais c’est aussi source d’erreurs et de confusion.

Supprimer les branches/spip-X.Y-stable amènera de la clarté, réduira les oublis et les erreurs, réduira aussi la production de zip par smart_paquets.

Voilà mes remarques et mon avis.

Et des bisous ! :slight_smile:

PS: désolé si le ton vous paraît péremptoire, c’est pas le but. J’ai peu de temps pour détailler les arguments qui accompagne ce point de vue et je voulais juste rappeler ça avant que la proposition soit entérinée :stuck_out_tongue:

Ciao

Bon james a dégainé plus vite que moi :slight_smile:

Sur le fond je suis d'accord avec James, on garde un comportement
historique dit de facilité alors qu'un svn switch fait tout aussi bien
l'affaire. Les personnes utilisant ces branches "stable" savent de
facto utiliser à minima svn et donc switch.
On devrait juste avoir des tags des différentes versions quand on les fige.

Et autrement bisous pour tout le monde :slight_smile:

Km

En fait c’est pas tellement la question de savoir si on sait ou pas faire svn switch, mais qu’en étant sur un spip-3.2-stable on est sur en faisant svn up d’avoir toujours la dernière release de cette branche sans avoir à chercher quelle est la derniere release/si il y a une release plus récente pour faire le svn switch.

C’est donc une facilité de maintenance que l’on propose, au prix d’un peu plus de complexité pour nous, c’est vrai.

Cela dit je note qu’on doit pouvoir supprimer la branche spip-3-stable tout court au profit d’une spip-3.1-stable et spip-3.2-stable uniquement ?
Mais si il y a consensus pour supprimer toutes les spip-3.x-stable ça m’est égal aussi même si j’ai l’impression qu’elles ont leur utilité

Salut,

moi qui utilise ces branches stables (et constate/signale les oublis quand il y en a), si je peux me brancher sur les tags au lieu des branches, ça me va tant que j'ai du stable... c'est équivalent ?

Mais j'avais cru comprendre que les tags, c'était mal, non ?

Bon, ben, bisou aussi alors :slight_smile:

         jean marie

PS: merci pour la nouvelle version!

Beaucoup de gens se branchent sur ces « branches » pour avoir la dernière release via svn (utile lorsque l’on a pas mal de site à mettre à jour)

Faire svn up à chaque release c’est quand même plus simple à faire que svn switch vasyquejecherchelebonnuméro

Faire les tags est tout aussi complexe pour nous à réaliser non?

Q.

Salut

Si on sait faire un svn switch alors on n'a pas besoin des
spip-x-stable car ce n'est pas plus long / compliquer à faire.
Et comme on part du principe que ces branches stables ne sont
utilisées que par des personnes utilisant SVN, je ne pense pas que ces
branches soient si utiles.

Autrement vu notre processus de publication et comme tu le dis
spip-3-stable n'a plus trop de sens vu qu'on travaille avec des 3.1 ,
3.2, 3.x

Enfin vu que c'est du svn, on peut tout à fait supprimer ces branches
et si plus tard on constate des régressions d'usage / une utilité
réelle on pourra toujours les rétablir (ni vu ni connu :slight_smile:

Km

Salut,

moi qui utilise ces branches stables (et constate/signale les oublis quand
il y en a), si je peux me brancher sur les tags au lieu des branches, ça me
va tant que j'ai du stable... c'est équivalent ?

TL;DR : oui, c'est équivalent, mais tu utiliseras plus souvent "svn switch"
que "svn up" pour tes montées de version ! :slight_smile:

Alors : C'est équivalent les tags et les branches ?

Presque.

On peut se figurer que les tags, ce sont des branches qui ne bougeront
plus. Ok, c'est un abus de langage, mais c'est pour expliquer.

Avec SVN comme outils de gestion de version, il n'y a aucune contrainte ni
limite technique à organiser les opérations de développement, de
maintenance et de publication (release) d'un logiciel. On peut créer des
répertoires comme on veut, où on veut.
C'est aussi avec le même outil que l'on peut copier des répertoires entiers
d'un emplacement à l'autre dans le dépôt central d'une part, et associer sa
copie locale avec le répertoire que l'on souhaite dans ce même dépôt,
d'autre part. Et, contrairement à BitKeeper, Git, etc, c'est la seule chose
que SVN sait faire, gérer des répertoires.

Mais comme au bout d'un moment, il devient nécessaire pour l'équipe en
charge des opérations d'organiser les phases de dev/maintenance/release,
des conventions ont émergé et on s'est mis à parler de branches.
Dans SVN, pour les représenter et puisqu'il n'y a que des répertoires pour
le faire, a émerge la convention suivante : à la racine du dépôt (ou à
l'emplacement dans le dépôt destiné à un logiciel), on créé un répertoire
pour le développement, un répertoire pour la maintenance, un répertoire
pour la publication : trunk, branches, tags.
Et comme la publication a vocation à garantir une distribution d'un
logiciel sans risque de changement, l'équipe s'engage à ne jamais modifier
les copies du logiciel présentes dans le répertoire tags.

Donc, dans SVN, tout est branche, puisque tout est répertoire.
Il est donc possible de "se brancher" où on veut et changer de "branche"
quand on veut.

Techniquement, ça donne ça :

Si tu veux être dans la future version, tu prends la branche spip.
Si tu veux être dans la dernière 3.x de maintenance, tu prends la branche
branches/spip-3.x, avec x la dernière sous-version, et "svn up" pour mettre
à jour ta copie locale,
Si tu veux être dans une version de maintenance précédente, tu prends la
branche d'une version précédente (branches/spip-3.1 par exemple), et "svn
up" itou
Si tu veux être sur une version "stable", tu prends le tag d'une version
stable (tags/spip-3.2.1, par exemple), c'est stable, ça bouge plus.
Si tu veux changer de branche, tu utilises "svn switch"

Le jour où tu souhaites passer d'une version "stable" à une autre : "svn
switch"
Si tu ne sais pas quelle version stable est la dernière : "svn ls svn://
trac.rezo.net/spip/tags" te donnera la liste de toutes les releases

La question est finalement de savoir si "svn switch" est une bonne
pratique, ou pas. Si elle est plus dure à utiliser que de faire un "svn up"
sur tes environnements de production tout le temps jusqu'au jour ou la
branche de maintenance stable que tu pointait disparait, ce qui t'obligera
à faire un "svn switch" pour passer à la suivante.

Au delà de la communauté SPIP, il y a eu plein de débats sur le fait de
savoir si utiliser un outil de gestion de version (svn ou git) pour faire
ses déploiements en prod est une bonne chose. Il en va de même des outils
de gestion de dépendances (maven, bundler composer, npm, etc.). En gros,
pour revenir à SPIP, il n'y a pas d'alternative autre que SVN ou les ZIP
pour le déploiement.

Bon, ça ne fait pas avancer le débat sur le maintien des branches de
maintenance stable, mais j'espère que ça répond à ta question :wink:

Mais j'avais cru comprendre que les tags, c'était mal, non ?

Compte-tenu de ce qui est dit plus haut, non, ce n'est pas mal. :slight_smile:

Bon, ben, bisou aussi alors :slight_smile:

            jean marie

Amitiés,

La facilité de maintenance pour les utilisateurs en SVN, c'est un argument.

En fait je n'ai pas assez de connaissance et d'expérience de SVN pour avoir un avis sur la question, mais ce dont je me rends compte c'est qu'on a des outils qui sont bons, qui fonctionnent bien (très), mais que SPIP diverge trop des standards et de ce qui se pratique aujourd'hui (SVN / PHP).

La remarque de James m'interpelle, on pourrait peut être pousser la discussion et les arguments, plutôt que faire comme on a toujours fait par habitude ?

Zoubis,

Salut,

Il ne faudrait pas que cette conversion se transforme en situation de blocage.

Une objection n’est pas une opposition. :slight_smile:

En l’état, il semblerait qu’il n’y a pas d’alternative au maintien de ces branches pour garantir à des utilisateurs leurs mises à jour via SVN avec un simple “svn up”.
Sans changer de consignes ni de pratiques, cela semble impossible, en effet. Et il est à cette heure trop tard pour la version 3.2 de SPIP, de toute manière.

Toutefois, il y aura une release 3.2.2 un jour, une 3.3 un autre jour. Et la problématique soulevée reviendra peut-être.

Si la question des branches SVN arrive après la publication d’une release, il sera toujours trop tard et le status quo pourra se maintenir ad vitam æternam.

Je ne voudrais pas que des gens se retrouvent “coinçés” (techniquement, ils ne le sont pas, mais ok, “svn up” :p)

Je suis cependant favorable à la proposition de Nico : pousser la discussion et les arguments avant la publication de la 3.2.2

Ce n’est pas inconciliable.

Camille a raison quand il dit que ce n’est pas compliqué de switcher d’une branche à l’autre. C’est vrai quand on maîtrise le client svn.
Mais j’entends aussi l’argument qui dit “une commande ça va, 3 commandes, bonjour les dégâts !” :smiley:

Et s’il existait un outil capable de déterminer quel est le bon numéro (“svn ls” plus un peu de logique basée sur un référentiel ou une règle) et qui faisait le up ou le switch ?

"3 commandes pour les utilisateurs sur leurs machines,

1 commande pour les exécuter

et dans un unique outil, les lier." :stuck_out_tongue:

Amitiés,

Et s'il existait un outil capable de déterminer quel est le bon numéro
("svn ls" plus un peu de logique basée sur un référentiel ou une règle)
et qui faisait le up ou le switch ?

La structure existe déjà, ça s'appelle une commande spip-cli.

Et ça se lance comme ça :

spip up [options]

Je dis la structure car ça ne gère pas forcément encore tous les cas
dont tu parles, qu'on pourrait vouloir gérer. Mais toute la structure
est là + c'est sur la zone + c'est en PHP donc pas mal de gens peuvent
contribuer.

Il y a bien déjà un tableau référentiel, mais qui concerne pour
l'instant uniquement les branches directes (donc "en dev" même si elles
sont plutôt stable), et il suffirait donc d'ajouter aussi les branches
"vraiment stables".

On pourrait alors ajouter comme option des trucs du genre

spip up --stable

(sans avoir à le faire quand on est déjà sur la bonne version évidemment)

Il faudrait bien sûr mettre à jour aussi la commande "Télécharger" (ou
"dl" qui contient le même référentiel (et il faudrait plutôt partager ce
même référentiel commun au lieu de le dupliquer.

spip dl
spip dl --branche 3.2

Rajout à faire pour celle là symétriquement à l'autre :

spip dl --stable
spip dl --branche 3.2 --stable

Bref, il y a sûrement un peu de nettoyage à faire, et ensuite améliorer,
mais encore une fois, toute la structure est là, en PHP, et déjà
fonctionnelle.

Les petits loups je vous adore.
Comme d’hab face à une question concrète pour un problème de maintenant on part en conjectures et en projets de développement à 5 ans qui résoudront certainement de manière très élégante la question :slight_smile:
Alors n’hésitez pas, foncez, ça sera génial.

En attendant je vais faire un truc foireux et basic, mais c’est juste en attendant mieux.
Des bisous

Salut james,

Merci pour cette explication détaillée on ne peut plus limpide ! Oui, ou sur le wiki ( ) Pour info, le lien est HS dans le Wiki ici : - jean marie

Bonjour,

À changer de branche (ou tag, mais les tags sont juste des branches dans
un dossier dédié, en svn).

svn switch svn://nouvel-url

Si tu es sur la branche
svn://trac.rezo.net/spip/branches/spip-3.1-stable

Et que tu veux passer en 3.2 mais que les commits stables (les versions
officiellement sorties et non pas les commits au fur et à mesure des
ajouts), alors tu fais :
svn switch svn://trac.rezo.net/spip/branches/spip-3.2-stable

Et ensuite "svn up" dedans tant que tu veux rester en 3.2.

Les petits loups je vous adore.
Comme d’hab face à une question concrète pour un problème de maintenant
on part en conjectures et en projets de développement à 5 ans qui
résoudront certainement de manière très élégante la question :slight_smile:
Alors n’hésitez pas, foncez, ça sera génial.

En attendant je vais faire un truc foireux et basic, mais c’est juste en
attendant mieux.
Des bisous

Ya pas de conjectures, je répondais juste à James qui disait que ce
serait bien d'avoir un outil pour faciliter un peu, en disant que la
base existe déjà.

Pour le reste, si les chemins des tags ont toujours le même schéma, il
n'y a pas trop à "chercher" pour mettre à jour. Si mon installation
stable est

svn://trac.rezo.net/spip/tags/spip-3.2.0

et que les listes, contrib, blog, twitter, mastodon, signalent qu'il y a
une 3.2.1 qui sort, alors je peux faire

svn switch svn://trac.rezo.net/spip/tags/spip-3.2.1

sans trop réfléchir…

Mais je suis d'accord quand tu expliques que même si on sait, faire
uniquement "svn up" permet de ne même pas savoir s'il y a eu un
signalement ou pas. Ce qui permet par exemple sur un serveur d'avoir un
Cron qui fait "svn up" une fois par nuit sur la branche "stable", et
donc on sait qu'on est toujours à jour même sans être notifié.

Donc je n'ai pas d'avis tranché là-dessus.

Hello,

Salut,

A quoi sert un Switch ??

À changer de branche (ou tag, mais les tags sont juste des branches dans
un dossier dédié, en svn).

svn switch svn://nouvel-url

Dans TortoiseSVN, c'est "Aller sur...". Là, tu choisis le nouveau répertoire à suivre (branche ou tag, cf explications de James).

C'est toute la question de ce fil :
- avec les branches, tu fais "Mettre à jour" (= svn up) car le répertoire ne change pas
- avec les tags, tu fais "Aller sur..." (= svn swich) car il y a un nouveau répertoire à chaque nouvelle version

                     jean marie

Les petits loups je vous adore.
Comme d’hab face à une question concrète pour un problème de maintenant on part en conjectures et en projets de développement à 5 ans qui résoudront certainement de manière très élégante la question :slight_smile:
Alors n’hésitez pas, foncez, ça sera génial.

En attendant je vais faire un truc foireux et basic, mais c’est juste en attendant mieux.

Oui, désolé pour les conjectures, le but n'était pas de bloquer.

On déplace la discussion dans une branche, et sur le master on fait comme on sait faire :slight_smile:

> Des bisous

Itou, et merci.