Carnet Wiki

La Zone Facile

Version 65 — il y a 4 mois Francky

Voir
-  Commandes svn de base pour la zone L’essentiel de SVN pour la Zone, pratique et immédiatement utilisable
-  Commiter un plugin sur la zone (ou en récupérer le code)
-  Dossiers d’un plugin : trunk / branches / tags pour la structure recommandée pour les dossiers d’un plugin (trunk et tags)
-  Processus opérationnel : Comment distribuer ma super contrib dans SPIP

Attention : Le texte qui suit peut être utile mais il n’est pas toujours parfaitement à jour.

Pas LA mais LES zones | Regles et repères | VocableSVN | Poser un tag

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. si vous voulez récupérer un plugin de la zone, pour l’utliser, alors que ce plugin n’est pas zipé et n’est pas proposé par SVP, il n’est pas besoin d’un logiciel client SVN, car le zip est accessible directement à l’adresse :
    <code>https://zone code>http://zone .spip.org/trac/spip-zone/changeset/latest/_plugins_/NOM_DU_PLUGIN ?old_path=/&format=zip
  1. la structure normale des sous-dossiers d’un plugin est Au Final ici.
  1. Lorsque vous modifiez ou créez un fichier, vous devez utiliser le saut de ligne Unix (LF). Assurez vous donc de paramétrer correctement votre éditeur de texte. Sinon, le script dos2unix peut vous aider à corriger les mauvais sauts de ligne.

[LesZones<-]

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 : [https://zone [http://zone .spip.org/trac/spip-zone/browser/_plugins_/->https://zone org/trac/spip-zone/browser/_plugins_/->http://zone .spip.org/trac/spip-zone/browser/_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 :
[https://zone [http://zone .spip.org/trac/spip-zone/browser->https://zone org/trac/spip-zone/browser->http://zone .spip.org/trac/spip-zone/browser] c’est la zone, tandis que
https://core http://core .spip.net/projects/spip/repository/show/spip org/projects/spip/repository/show/spip c’est le core.

Et https://zone http://zone .spip.org/trac/spip-zone/browser/_core_/plugins, c’est les plugins du core, c’est à dire ce qu’on appelait les extensions. hmmm.

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 [https://core [-> http://core .spip.net/projects/spip/repository] org/projects/spip/repository /] donne ainsi accès à
-  « spip » (actuellement la version 3.2, soit la plus récente)
-  « branches » (les versions anciennes, ou encore maintenues, de 1.8 à 3.1)

Donc là encore, attention : quand on tombe par google sur [->https://core http://core .spip.net/projects/spip/repository/changes/spip/ecrire/index org/projects/spip/repository/changes/spip/ecrire/index .php], 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, et un support assez complet PDF 24p. y compris tags & trunks !)

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 (archives ; ; Inscriptions), et demander à bénéficier d’un accés en écriture sur la zone. 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) [1]

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

Par exemple, pour
<code>https://zone code>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 : https://zone <code>http://zone .spip.org/trac/spip-zone/browser/

En Octobre 2015, les adresses on changé.
Pour le plugin « en_travaux par exemple :
-  Pour le récupérer en SVN : svn checkout svn://trac.spip.org/spip-zone/_plugins_/en_travaux
-  Alors que le source est : <code>https://zone code>http://zone .spip.org/trac/spip-zone/browser/_plugins_/en_travaux

Pour télécharger spip avec les plugins natif dans sa version en développement, il suffit de mettre :

  • Pour la branche spip 2..x
  • svn://trac.rezo.net/spip/branches/spip-2.0
  • Pour la branche spip 2.1.x
  • svn://trac.rezo.net/spip/branches/spip-2.1
  • Pour la branche spip 3..x
  • svn://trac.rezo.net/spip/branches/spip-3.0
  • Pour la branche spip 3.1.x
  • svn://trac.rezo.net/spip/branches/spip-3.1
  • etc...

Sachant que la version la plus »expérimentale" se trouve ici :

  • svn://trac.rezo.net/spip/spip

Si vous êtes familiarisé-e avec les outils en ligne de commande, essayez https://contrib.spip.net/spip_svn_loader

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://trac.rezo.net/test/ ou plutôt svn://trac.rezo.net/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 : pensez que votre Tortoise est le serveur !.

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 » [2], 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 ->https://zone http://zone .spip.org/trac/spip-zone/changeset/58756] 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

Retour à la version courante

Toutes les versions