Carnet Wiki

La Zone Facile

Version 39 — August 2012 — jsb

Pas LA mais LES zones | Regles et repères | VocableSVN | Poser un tag | Répertoires trunk et branches

La zone c’est pas un site pour promeneurs, c’est un site pour programmeurs ! Alors une chose est claire : ça pourrait être plus facile de s’y retrouver.

Cette page vise à collecter les repères et jalons... et même, parfois, des idées pour faciliter les choses par des modifications in situ, même si il semble que le paramétrage de trac soit particulièrement ardu.

Antisèche

  1. En bref : svn://trac.rezo.net/spip/spip et svn://zone.spip.org/spip-zone/ sont les 2 mamelles de SVN. [1]-# il n’est pas besoin d’un logiciel client SVN pour récupérer les plugins de la zone qui ne sont pas disponibles en zip sur spip-contrib, car on accède directement à leur zip à l’adresse :
    http://zone.spip.org/trac/spip-zone/changeset/latest/_plugins_/NOM_DU_PLUG?old_path=/&format=zip

Pas LA mais LES zones !

Il y a plusieurs sortes de zones SVN, et quand on fait une recherche avec google, c’est pas toujours évident de savoir où est-ce qu’on atterrit, car les zones se ressemblent toutes, avec l’interface insipide de trac.

-  Certaines zones SVN sont pour le core de SPIP, d’autres sont pour les plugins et autres outils ou sites de la galaxie.

Principales adresses des zones :
-  les plugins
-  le core version de développement
-  le core les autres versions
-  les extensions
-  la galaxie
-  la/les dists

Quand on fait une recherche par google et qu’on tombe sur une zone, il faut être vigilant pour déterminer sur une page de quelle zone on arrive :
http://zone.spip.org/trac/spip-zone/browser
c’est la zone, tandis que
http://core.spip.org/projects/spip/repository
c’est le core.

De plus, à certains moments de l’histoire de SPIP, les adresses et serveurs changent, mais les anciennes versions restent : attention à être bien dans une zone “active”. C’est un peu une devinette, mais les dates de changement des derniers commits permettent de savoir si c’est une zone vivante ou une vieille chaussette qui traine. A l’heure actuelle, il n’est pas exclu que seules des zones actives soient en ligne, mais je n’y mettrais pas ma souris au feu.

-  Ensuite, dans le noyau de SPIP, il y a plusieurs branches de développement correspondant à différentes versions. La page http://core.spip.org/projects/spip/... donne ainsi accès à
-  “spip” (actuellement la version 3.0 rc, soit la plus récente)
-  “branches” (les versions anciennes, encore maintenues, de 1.8 à 2.1)

Donc là encore, attention : quand on tombe par google sur http://core.spip.org/projects/spip/..., il ne s’agit pas d’un fichier actuel, mais de la version actuelle d’une version de SPIP qui ne sortira que dans plusieurs mois, ou peut être pas...

<blockquote class="spip">

Suggestions pour améliorer ça

Actuellement, il n’y a pas de repère visuels, il faut lire et décrypter l’adresse pour savoir à quelle sorte de zone SVN appartient la page affichée. Ce point gagnerait à être amélioré.
Il serait utile de manifester de manière immédiate et non ambigüe la nature de la zone SVN de la page affichée. Par exemple par un surtitre ou un graphisme ou un logo ou un bandeau haut ou bas ou gauche ou droite.
Pour info, la page http://trac.edgewall.org/wiki/TracI... indique comment changer le look en modifiant les templates Genshi (templating engine écrit en python) .

</blockquote>

SVN : pour accéder à tout ça

Il y a quelques docs dont la lecture sera utile comme préalables :
-  Comment utiliser SVN
-  et la Charte Spip-Zone
-  La Presentation de Subversion de Scriibe.net
-  Pour Tortoise/Windows : le Tutoriel de Vincent et les Chapitres->http://tortoisesvn.net/docs/release/TortoiseSVN_fr/index.html] de la documentation en-ligne (PDF téléchargeable sur http://tortoisesvn.net/support.html)

On a référencé plus haut les adresses des zones SVN par leur adresse http. On peut ainsi leur rendre visite avec un simple browser. Mais pour travailler avec, pour bénéficier du SVN, il faut un compte avec un code d’accés à la zone, un client SVN et utiliser les adresses SVN.

-  Pour simplement consulter, lire et télécharger du code sur votre ordinateur, point n’est besoin d’un compte, mais pour publier du code (“commiter”), il vous faudra un compte SVN pour SPIP. Il faut pour cela s’inscrire à la liste de discussion associée à la zone, et demander à bénéficier d’un accés. Il faut avoir préallablement lu la charte de développement évoquée ci dessus, et compris l’esprit dans lequel est développé SPIP et proposé la zone. C’est Gilles qui délivre généralement les comptes et mots de passes associés.

-  Les clients svn sont divers mais sous MSWindows, il y en a surtout un : tortoisesvn, détaillé ci-dessous à télécharger et installer sur sa machine. Il intègre de nouvelles options au menu contextuel de l’explorateur (sur clic droit dans un dossier) [2]

-  Sauf exception, les adresses svn se déduisent des adresses http en remplaçant http:// par svn://

Par exemple, pour
http://zone.spip.org/trac/spip-zone/browser/tags/abomailmans_spip2
svn://zone.spip.org/spip-zone/tags/abomailmans_spip2

En juin 2010, l’équivalence de la zone svn / http (ROOT) est :
SVN : svn://zone.spip.org/spip-zone/
HTTP: http://zone.spip.org/trac/spip-zone/browser/

En ce qui concerne le core

Pour les diverses versions du core l’adresse générale svn est : svn://trac.rezo.net/spip.

<blockquote class="spip">

On y voit :
-  les “tags” : c’est les versions sorties telles quelles, ça évolue pas
-  les “branches” : c’est les versions déjà sorties et parfois anciennes, mais qui sont susceptibles d’évoluer notamment parce que certaines sont encore maintenues et pourraient donner une nouvelle sous-version d’une ancienne version.
-  le trunk, dans le sous-répertoire ’spip’, c’est la version à la pointe du progrés, qui un jour donnera la prochaine version....

</blockquote>

Tout commit sur la zone se traduit par l’envoi de mails de notifications automatiques, reçus par tous les développeurs et utilisateurs intéressés, ce qui leur permet de suivre le développement de SPIP et des plugins.
voir. Cette liste bénéficie d’une interface newsgroup sur gmane

Pour tester les commits SVN il y a un répertoire bac à sable : svn://zone.spip.org/test ou plutôt svn://spip.org/test !!
C’est là qu’il faut tester SVN car c’est un “repository” à part, pour lequel il n’y a pas génération de notification mail (tant qu’à faire, autant ne pas polluer les listes avec des tests).

<blockquote class="spip">

Il y a aussi quelques VDOs pédagogiques que Gilles a préparé :
-  Création d’un nouveau projet, ajout au dépôt
-  Ajout, modification, et suppression de fichiers/répertoires sous SVN
-  Mise à jour de sa version de travail, fusion de modifications concurrentes
-  Conventions standards trunk / tags / branches

</blockquote>

L’interface TortoiseSVN est agréable et intuitive, du moins en ce qui concerne les fonctions de base. Elle propose notamment une navigation à travers les dossiers du repository svn maître ou local, avec de riches menus contextuels qui permettent de choisir facilement ce qu’on veut. ça va d’autant mieux qu’on connait le vocabulaire svn, bien spécifique, et c’est là que c’est pas intuitif au départ.

Note : Les options du menu de TortoiseSVN sont décorées par des petites icones : fléches vers le bas ou vers le haut notamment. Faites y bien attention pour vous assurer que vous faites une opération “dans le bon sens” [3], c’est “, car elles sont souvent plus intuitives que les termes (’export’ ou ’import’ sont bien ambigus en particulier).

Voici donc quelques repères du Vocabulaire SVN

-  la commande”checkout" permet de récupérer localement un répertoire de la zone
C’est par là qu’on commencera sans risque. Il n’est pas besoin d’un mot de passe pour cela.

-  la commande “commit” : permet d’envoyer sur la zone les modifications faites sur les versions locales des fichiers.

-  la commande “up” permet de faire une mise à jour de la version perso des documents, à partir de la version “maître”". Si on travaille en local avec une copie récupérée par SVN des fichiers de la zone, “up” ça veut dire télécharger depuis le site de la zone les nouveaux fichiers et les fichiers qui ont entre temps été modifiés par d’autres développeurs. (C’est donc éventuellement trompeur au début puisque ce n’est pas un upload mais un download).

-  la commande “export” permet de recopier ailleurs le contenu d’un répertoire svn local, mais sans les informations techniques de SVN qui alourdissent chaque sous-répertoire de l’arborescence : utile pour se récupérer une version utilisable propre....

-  la commande “import” uploade sur le dépot SVN le contenu du répertoire courant ; opération d’initiation uniquement pour la création d’un nouveau plugin, à utiliser avec précaution.

Difficulté :
-  les conflits de modification d’un même fichier

Les Règles à Respecter et les Erreurs à Eviter

La zone c’est pas (que) pour rigoler. C’est le support IN FINE de ce qui nous relie : le code. C’est donc précieux, on ne fait pas n’importe quoi avec. ça se traduit par des interdits et des règles de conduites à respecter quand on y touche.

Ce qui suit a parfois été formulé, de manière plus ou moins formelle, mais parfois ç’a n’a que “réagi”, après une erreur justement.

Ya des trucs évidents et pas spécifiques au SVN :
-  pas casser le code des copains
-  documenter ce qu’on fait
-  faire “coopératif”
-  se renseigner sur l’existant avant de coder (si ça se trouve, ce que vous vous apprêtez à faire a déjà été fait)

Ya des trucs spécifiques à SPIP :
-  “on code d’abord, on discute après” (pour donner du coeur à l’ouvrage et éviter les discussions stériles)
-  “gogogo” ! (version applicative du précédent précepte)

Enfin, ya des trucs très spécifiques à la zone :

-  Scrupuleusement documenter chaque commit au moins par un log qui décrit le code (ne pas dire “encore un commit sur formulaire.php”, qui est totalement redondant, mais “ajout d’un paramètre $date à la fonction form_youpi pour indiquer la date de création” par exemple)

-  Eviter de faire des commits pour rien du tout ou de trop petites modifications (les rassembler si possible car ça encombre la liste d’information sur les commits et nuit au suivi). C’est pour cela d’ailleurs qu’il y a un espace de test à part.

-  Respecter l’historique !!! L’historique, c’est l’armoire en dentelle de l’arrière grand-mère et les actions russes du grand père : inestimable. L’historique du code, c’est la possibilité d’accéder à toutes les modifications qui ont mené à la version actuelle du code (pour l’instant, dans le passé seulement...).
ça peut être utile pour comprendre le code (en lisant les logs passés par exemple) ou pour restaurer une version antérieure (si on s’est trompé).

<blockquote class="spip">

Si par exemple on doit déplacer un répertoire, effacer ce répertoire puis le copier à sa destination, effacerait l’historique, ce qui doit être absolument évité. Pour obtenir le même résultat, mais en conservant l’historique, on utilisera la commande SVN dédiée au déplacement...

</blockquote>

-  Attention : la commande import peut conduire à déposer des fichiers ou répertoires entiers sur la SVN alors qu’on voulait importer quelquechose localement. Attention donc à la flèche petit logo sur l’option de la commande : c’est une flèche qui monte...

Poser un TAG en SVN

Un tag (anciennement sabot) est un moyen de ’figer’ un plugin a un moment T de son développement. Si vos modifications risquent d’affecter les utilisateurs antérieurs ou pour ne pas risquer d’erreurs, posez un tag dans tags.

Voici comment poser un tag dans /tags en ligne de commande en restant sur le serveur de spip-zone, le dossier SVN “abomailmans” et son contenu sera recopié sous “abomailmans_spip2”

ordinateur:~ touti$ svn copy svn://zone.spip.org/spip-zone/_plugins_/abomailmans \
           svn://zone.spip.org/spip-zone/tags/abomailmans_spip2 \
          -m "creation tag pour abomailmans"
Authentication realm: <svn://zone.spip.org:3690> SPIP Zone
Password for 'touti':
Authentication realm: <svn://zone.spip.org:3690> SPIP Zone
Username: toutati@exemple.com
Password for 'toutati@exemple.com ':


Committed revision 38595.

Une fois que Committed revision n° apparait c’est bon, le tag est posé !

Tags et versions de dev et stable des plugins

davux :
Le processus de développement pourrait (devrait ?) être le suivant :
-  1. à la création du plugin, utiliser dans plugin.xml l’état “dev”
-  2. on développe son plugin par commits successifs
-  3. quand on est sur une version stable, on change en “stable”, on commit
et on copie dans tags/. La première fois, on ajoute une ligne spécifique
dans l’empaqueteur.
-  4. on remet l’état à “dev”, et on reprend à 2.

ça serait nickel : un petit filtre dans la page de plugins qui ne montre que les plugins stables par défaut, ou même un fil RSS distinct avec juste les versions stables, et c’est bon. La grosse question reste de comment simplifier le process aux auteurs de plugins pour les inciter à indiquer la dernière version stable.

Annuler un commit

Pour annuler un commit désastreux et revenir à la version antérieure, il faut le ’revert’.

Une commande svn possible pour annuler le commit 58754 est :
svn merge -c -58754

Avec les outils GUI (tortoiseSVN, rabbitSVN, rapidsvn) il faut

  1. reverter la copie locale jusqu’à la bonne version avant le mauvais commit, puis
  2. commiter les changements

2011 : branches et version d’un plugin

Plusieurs sous-répertoires dans le dossier d’un plugin : trunk (pour SPIP en développement), branches/1.5 ...

[SPIP Zone] trunk / branches / tags
-  le trunk c’est le développement le plus avancé. En pratique c’est quasiment toujours la version pour SPIP3.
-  les branches sont les autres versions : versions antérieures mais toujours maintenues, avec des mises à jours, corrections de bugs, et en pratique des nouvelles fonctionnalités. En pratique la plupart du temps ce sont les version toujours maintenues et développées pour spip2.
-  les tags, c’est une copie instantannée d’une version. C’est destiné à ne plus jamais bouger. On ne commite jamais sur une version “tag”

Voir pour l’utilisation du processus : l’explication d’usages des plugins

cedric préconise :

svn mv corbeille corbeille_trunk
svn commit 
mkdir corbeille
svn add corbeille
svn mv corbeille_trunk corbeille/trunk
svn commit

Rastapopoulos précise :

// Sauver le dossier actuel en gardant l'historique
svn move monplugin monplugin_tmp


// Créer la nouvelle structure de dossier et la commiter
mkdir monplugin
mkdir monplugin/branches
svn add monplugin
svn commit monplugin


// Si on veut tout péter : sauver l'état actuel dans une branche du nom de la version
svn cp monplugin_tmp monplugin/branches/1.5.x


// Déplacer vraiment la sauvegarde dans le trunk cad la branche de dev
svn move monplugin_tmp monplugin/trunk


svn commit monplugin

b_b rédige un pense bête ainsi : http://www.weblog.eliaz.fr/article113.html

Joseph, qui se sert de TortoiseSVN indique avec l’appui de Cerdic :
-  renommer le répertoire monplugin en monplugin_trunk
-  commiter (pour pouvoir plus loin recréer un répertoire du même nom)
-  créer le répertoire monplugin
-  renommer le répertoire monplugin_trunk en monplugin/trunk

Marcimat explique en détail comment pour sa part, pour partir d’un plugin existant X, il a fait :

svn mv X X_tmp
svn commit -m "prépa trunk/branches" X X_tmp


svn mkdir X
svn mkdir X/branches
svn cp X_tmp X/trunk
svn mv X_tmp X/branches/v1
svn commit -m "trunk/branches" X X_tmp

Structure élémentaire normative conseillée

En résumé, sur chaque sous-répertoire de la zone (consultez: ces sous-répertoires de http://zone.spip.org/trac/spip-zone/browser/ )
Le schema normatif à utiliser est donc le suivant :

<blockquote class="spip">

spip-zone/_plugins_/ monplugin / {{}}
spip-zone/_plugins_/ monplugin / branches : pour des versions “stables” à ne plus modifier
spip-zone/_plugins_/ monplugin / branches/version_0 :
spip-zone/_plugins_/ monplugin / branches/version_2 :
spip-zone/_plugins_/ monplugin / branches/version1 :
spip-zone/_plugins_/ monplugin / tags
spip-zone/_plugins_/ monplugin / trunk : normalement la version principale
choisir pour /selon regles definies dans REGLES_COMMIT/pour la version “utile”
 [4]
spip-zone/_plugins_/ monplugin / {{}}

</blockquote>

On ramène au fonctionnement TortoiseSVN (ou RabbitSVN pour Linux) :
-  soit par l’explorateur intégré
-  soit par les commandes détaillées

* se créer un “point d’accroche en local”
y placer sa structure (celle correspondant en dessous de ..../trunk/ ??)
toujorus penser a éliminer les scories (.bak et autres) avant de transferer

(sous-reserve de validation par les experts...31VIII2012)
Pour avoir une présentation centrée sur le processus opérationnel, lire maintenant [http://contrib.spip . 31VIII2012 ) net/Comment-distribuer-ma-super-contrib-dans-SPIP->http://contrib.spip.net/Comment-distribuer-ma-super-contrib-dans-SPIP]

Retour à la version courante

Toutes les versions