Scénarii de transition et de migration des dépôts SVN de SPIP

, par James

Suppression des branches non maintenues

Supprimer une branche ne l’efface pas de l’historique du dépôt. Elle disparaît de l’état actuel du dépôt.

Branches à supprimer :

  • r16004+plugins/
  • spip-1.8/
  • spip-1.9/
  • spip-1.9.2/
  • spip-2-stable/
  • spip-2.0/
  • spip-2.1/
  • spip-3-stable/
  • spip-3.1-stable/

Exemple : svn rm ^/spip/branches/r16004+plugins

Déplacements des tags non couverts par l’adoption de composer dans un répertoire archives

Il faut décider des versions qui seront installables par composer, a priori, les 3 dernières releases de chaque versions maintenues,

Exemple de commandes :

svn mkdir ^/museum -m "Musée SPIP"
svn ren ^/spip/tags/spip-1.8.3b ^/museum/spip-1.8.3b -m "Musée SPIP"
svn ren ^/spip/tags/spip-1.9.1i ^/museum/spip-1.9.1i -m "Musée SPIP"

Résultat :

svn://trac.rezo.net/spip/museum
├── spip-1.8.3b
├── spip-1.9.1i
├── ...

Renommage des branches maintenues et derniers tags associés

Composer interprète les noms des branches et des tags en tant que version d’un composant quelque soit l’outil de gestion de code source (svn ou git).

Les préfixes spip- ne seront pas interprétés correctement. La branche spip/ ne sera pas considérée comme la branche principale.

Cette transformation facilitera aussi la migration vers des dépôts GIT qui s’appuie sur la même convention pour reconstruire ses propres branches et tags depuis un dépôt svn.

De plus, d’autres composants pourront être hébergés sur ce même dépôt parfois en procédant à une copie du code historique, pour faciliter la conservation de l’historique.

Exemple de commandes :

svn mkdir ^/classic -m "SPIP Classic"
svn ren ^/spip/spip ^/classic/trunk -m "spip->trunk"
svn ren ^/spip/branches/spip-3.2 ^/classic/branches/3.2 -m "branches/spip-3.2->branches/3.2"
svn ren ^/spip/tags/spip-3.2.1 ^/classic/tags/classic/3.2.1 -m "tags/spip-3.2.1->tags/3.2.1"

Résultat :

svn://trac.rezo.net/spip/classic
├── branches
│   ├── 3.0
│   ├── 3.1
│   └── 3.2
├── tags
│   ├── 3.0.27
│   ├── 3.1.8
│   └── 3.2.1
└── trunk
    ├── spip.php
    ├── ...

Ajout des fichiers composer.json

Au 30 avril 2018, les versions 3.0 et 3.1 ont pour pré-requis une version PHP inférieure à celle requise par Composer. La branche de développement (3.3.x-dev) et la branche 3.2 nécessite au minimum PHP5.4 et sont compatibles PHP7

Il y aura 4 fichiers distincts pour le trunk et les 3 branches de maintenance.

Exemple pour la branche 3.2 :

{
    "name": "spip/classic",
    "description": "SPIP Classic",
    "type": "spip-classic",
    "license": "GPL-3.0-or-later",
    "authors": [{
        "name": "Arnaud Martin",
        "email": "arno@rezo.net"
    },{
        "name": "Antoine Pitrou",
        "email": "antoine@pitrou.net"
    },{
        "name": "Philippe Rivière",
        "email": "fil@rezo.net"
    },{
        "name": "Emmanuel Saint-James",
        "email": "esj@rezo.net"
    }],
    "require": {
        "php": "^5.4|^7"
    },
    "config": {
        "platform": {
            "php": "5.4.45"
        }
    }
}

Cf. Fichiers composer.json pour toutes les branches maintenues de SPIP

Il faudra ajouter le répertoire vendor/ dans les propriétés svn:ignore

On peut aussi ajouter un fichier .gitignore pour anticiper un éventuel passage à GIT.

Cas des tags

Pour les tags courants (3.2.1, 3.1.8, 3.0.27), il pourra être décidé :

  • soit d’ajouter le même fichier composer.json que celui de la branche correspondante,
  • soit d’attendre le moment opportun pour sortir des releases (3.2.2, 3.1.9, 3.0.28) par copie des branches et de déplacer les tags courants dans le musée SPIP.

Passage en https pour les dépôts subversion

  • Par défaut, Composer n’accepte pas les connexions réseaux non-sécurisées, où, notamment, les mots de passe transitent en clair sur Internet. Le protocole svn:// n’est pas sécurisé nativement.
  • L’abaissement du niveau de sécurité de Composer pour ce type de connexion est possible mais est assortie d’un warning systématique.
  • Le protocole svn+ssh:// nécessite un gestion de clés publiques et n’autorise pas simplement ou pas du tout d’accès anonyme en lecture.
  • Le protocole svn:// ne passe pas tous les proxies d’entreprises, https:// passe presque partout.

Il faut convenir d’une URL pour les dépôt de SPIP (et plus tard de la Zone). Nous suggérons : https://svn.spip.net/spip dans lequel le code actuel de SPIP sera dans un sous-répertoire "classic".

Les points techniques de mise en place pourront être discutés, mais l’essentiel à savoir réside dans le fait qu’il faut un serveur apache avec les modules DAV, et DAV_SVN ainsi que des conditions d’authentification dans la configuration. le démon svnserve n’est, une fois ce service mis en place, plus nécessaire et l’accès en lecture et en écriture via svn:// n’est plus possible.

Consignes pour les utilisateurs de svn pour la mise à jour de leurs working copies

éventuellement reprendre le contenu de ce mail :

[http://archives.rezo.net/archives/spip-dev.mbox/NEW3NJ2PLQERYO2QWCXDZ6VAUE63BI4R/]

Ancien URL Nouvel URL
svn://trac.rezo.net/spip/spip https://svn.spip.net/spip/classic/trunk
svn://trac.rezo.net/spip/branches/spip-3.2 https://svn.spip.net/spip/classic/branches/3.2
svn://trac.rezo.net/spip/tags/spip-3.2.1 https://svn.spip.net/spip/classic/tags/3.2.1

Réarrangement des plugins _core_ sur la zone

Un article détaillé est en préparation pour que les branches des plugins du _core_ soit en phase avec les contraintes de Composer et ce nouvel arrangement du code de SPIP.