Installer un SPIP en Git

, par _Eric_

Introduction

Après avoir installé et configuré un environnement Git, puis appris les rudiments des commandes Git de base, il convient maintenant de créer un environnement SPIP sous Git.

Pour ce faire, il est toujours possible d’enchainer les commandes git clone sur l’ensemble des repos qui composent la distribution officielle de SPIP. Néanmoins, il y a plus simple en utilisant l’un des deux outils proposés par la communauté :

  • checkout, un script PHP ;
  • ou git_loader, un script bash.

Ces deux outils possèdent un fichier readme.md qui détaille les commandes possibles.

L’outil checkout

Prérequis

L’outil checkout est un script PHP multi-méthodes permettant une syntaxe unifiée Git/SVN/FTP des commandes de checkout. Il est possible d’installer un SPIP ou tout autre repo. Dans ce paragraphe, nous nous concentrerons sur l’installation de SPIP en Git.

Sous Windows, il est plus pratique d’avoir installé le bash git qui fait partie de l’installateur « Git for Windows » (voir l’article Installation de Git). En effet, vous n’aurez pas besoin d’utiliser le .bat et vous pourrez utiliser les mêmes commandes que sous Mac ou *NIX.

Cet outil est disponible dans l’organisation spip-contrib-outils de la forge Git de SPIP. Le repo est nommé checkout. Il suffit de télécharger le zip sur la forge https://git.spip.net/spip-contrib-o... et de l’installer dans un répertoire de votre choix. Il est recommandé de placer le script dans un dossier connu du PATH afin d’y accéder plus simplement. Le readme.md détaille en introduction la procédure pour y arriver.

Installation de la distribution officielle de SPIP

En prenant l’hypothèse que le script est bien accessible dans le PATH pour installer le master de SPIP dans le répertoire spip/, il suffit d’invoquer la commande suivante à partir d’un répertoire donné (la racine des sites par exemple) :

$ checkout.php spip

ou la commande suivante si le script a été installé dans le PATH comme un exécutable sans extension :

$ checkout spip

La paramètre spip n’indique pas le dossier mais la méthode choisie, à savoir, installer un spip. Le dossier n’étant pas précisé c’est le dossier spip/ qui est créé par défaut et la branche master qui est installée.

Si on préfère installer un SPIP 3.2 dans le dossier spip32/ il suffit cette fois d’invoquer la commande :

$ checkout.php spip -bspip-3.2 spip32

A noter le -b suivi directement du nom de la version qui n’est pas 3.2 mais spip-3.2 (voir les branches sur le repo spip de la forge).

A ce stade nous avons une branche SPIP installée en Git avec ses plugin-dist. Contrairement à git_loader, checkout n’installe pas les plugins « Dev » et « Thèmes ». Par contre, checkout installe SPIP par défaut en HTTPS et pas en SSH. Pour installer une branche master en SSH dans le répertoire spipssh/ il faut invoquer cette fois la commande suivante :

$ checkout.php spip git@git.spip.net spipssh

Petite cerise sur le gâteau, il est possible de mettre à jour votre SPIP en rejouant la même commande que précédemment ou de changer de branche active si besoin en utilisant l’option -b. C’est très pratique, mais n’oubliez pas de lancer la commande depuis le même dossier de base sinon vous recréerez un nouveau site.
Par contre, les éventuels plugins spécifiques du dossier plugins/ ne sont pas mis à jour.

L’outil git_loader

Prérequis

L’outil git_loader nécessite que les outils suivants soient disponibles en ligne de commande :

  • cURL, pour utiliser l’API Gitea de la Forge SPIP ;
  • et jq, pour phraser le JSON des repos correspondants aux plugins-dist.

Installation de la distribution officielle de SPIP

Cet outil est disponible dans l’organisation spip-contrib-outils de la forge Git de SPIP. Le repo est nommé git_loader. Il suffit de télécharger le zip sur la forge https://git.spip.net/spip-contrib-o... et d’installer le script dans un répertoire connu du PATH afin d’exécuter le script de n’importe où.

Depuis les dernières mises à jour, git_loader sait créer le répertoire de destination ce qui simplifie grandement l’installation. En prenant l’hypothèse que le script est bien accessible dans le PATH, pour installer le master de SPIP dans le répertoire spip/ en utilisant une authentification SSH, il suffit d’invoquer la commande suivante à partir d’un répertoire donné (la racine des sites par exemple) :

$ git_loader.sh -m ssh -d spip

ou la commande suivante si le script a été installé dans le PATH comme un exécutable sans extension :

$ git_loader -m ssh -d spip

Par défaut, git_loader installe la branche master c’est pourquoi il est inutile de le préciser. On indique, par contre, l’authentification SSH car le défaut est HTTPS et, si le répertoire de destination n’avait pas été précisé, l’installation aurait eu lieu dans le répertoire courant au moment du lancement de la commande.

A ce stade la version master de SPIP est installée, plugins-dist compris. On notera que les plugins « Dev » et « Thèmes » qui avaient été retirés de la distribution de SPIP par défaut sous SVN (voir la liste des externals) sont bien présents. Il faudra à terme revoir git_loader pour garder une cohérence avec l’installation SVN ou celle de spip_loader. Par contre, leur présence n’est en rien un problème.

Si l’on voulait installer la branche 3.2, il suffirait d’ajouter l’option -v 3.2 à la commande précédente :

$ git_loader.sh -v 3.2 -m ssh -d spip

L’installation d’une branche n’est possible que pour SPIP 3 car les branches 3.0, 3.1, 3.2, etc sont toutes disponibles pour les plugins-dist.

Installer un jeu de plugins

Pour compléter le SPIP précédemment installé, il nous faut maintenant rajouter les plugins spécifiques au site que nous voulons développer. Pour ce faire, il n’existe pas de solution miracle : il va falloir accumuler les commandes git clone sur l’ensemble des plugins souhaités en espérant que ceux-ci sont tous dans la forge. Si certains ne sont pas encore transférés sous Git, il faut soit continuer à les installer en SVN soit faire la demande de transfert à un administrateur.

Tout d’abord on crée le dossier plugins/ à la racine de notre SPIP et on s’y rend :

$ mkdir plugins
$ cd plugins

Ensuite, on enchaine une par une les commandes git clone sur les plugins désirés, par exemple, « YAML » et « Rainette » :

$ git clone git@git.spip.net:spip-contrib-extensions/yaml.git
$ git clone git@git.spip.net:spip-contrib-extensions/rainette.git

La seule difficulté est de repérer l’url des repos YAML et Rainette. Pour cela il faut se rendre sur la page de leur repo hébergé sur la forge Git de SPIP (par exemple, https://git.spip.net/spip-contrib-e...) et copier le lien qui s’affiche à coté du label SSH. On peut sélectionner soit le lien SSH soit le lien HTTP en cliquant sur le bouton respectif. Dans notre exemple, nous avons choisi le lien SSH comme depuis le début du guide.

Il est aussi possible d’utiliser checkout pour faire la même chose. L’intérêt est de pouvoir plus facilement choisir une branche ou une révision voire de choisir la méthode Git, SVN ou FTP. L’exemple précédent devient :

$ checkout git -bmaster git@git.spip.net:spip-contrib-extensions/yaml.git
$ checkout git -bmaster git@git.spip.net:spip-contrib-extensions/rainette.git

Sans autre précision, les dossiers créés portent le nom du repo.

Enfin, si on utilise toujours les mêmes plugins de base, il peut être intéressant de créer un script bash contenant les commandes d’installation de ces plugins, soit en utilisant des git clone, soit en utilisant l’outil checkout.

Migrer un SPIP existant

Il n’existe pas de solution immédiate pour convertir un environnement SPIP sous SVN vers le même environnement sous Git. Le plus simple est donc :

  1. renommer le répertoire correspondant à votre SPIP sous SVN en spipold/ ou autre ;
  2. utiliser l’un des outils, checkout ou git_loader, pour recréer votre site avec le même nom de dossier en suivant les procédures décrites préalablement ;
  3. compléter l’environnement SPIP obtenu avec les plugins nécessaires pour recréer exactement le même site que celui sous SVN via des git clone ou l’outil checkout ;
  4. restaurer l’environnement de départ en copiant à minima le fichier .htaccess si besoin et le contenu des dossiers IMG/, config/. Vous pouvez même copier le contenu de local/ et tmp/ si vous voulez conserver exactement le même état des caches et fichiers temporaires ;
  5. supprimer le répertoire spipold/ devenu inutile.