Installer et mettre à jour SPIP avec SVN
SPIP est un CMS écrit en PHP et développé sous SVN. Pour des raisons historiques, ses branches et tags sont organisées de telles manières qu'il est aujourd'hui facile de se perdre. :)
Ce script permet de guider une personne souhaitant installer ou mettre à jour une instance SPIP avec Subversion.
- bash. Ce script est écrit en bash sur un Mac OS X (GNU bash, version 3.2.57) mais se veut compatible avec les plates-formes linux (testé sur Ubuntu 14 et mingw64). Pour s'en servir, il faut savoir ouvrir un terminal... :)
- subversion. Ce script caclule et exécute des lignes de commandes du type
svn info
,svn checkout
,svn switch
, etc. Votre machine doit disposer d'un client subversion (svn
) installé et configuré dans le$PATH
. - curl. Pour installer et tenir à jour la liste des branches de référence décrite plus bas, ce script utilise la commande cURL qui doit, elle aussi, être configurée dans le
$PATH
. - php. Ce script vérifie la version de PHP installée et configurée comme les outils ci-dessus.
- Facultativement, zip et unzip. En cas de procédure de "réparation", les données physiques de l'instance SPIP sont sauvegardées puis restaurées avec ces outils.
S'il manque un des outils ci-dessus, le script vous le dira.
- Le trunk de SPIP n'est pas
trunk
maisspip
. Le script y fera référence en parlant dedev
. - Les branches de maintenance historiques de SPIP sont nombreuses. Elles se trouvent dans le répertoire
branches
du dépôt officiel de SPIP. Le script y fera référence en parlant demaintenance
. - Les versions alpha, beta, RC ou stable de SPIP se trouvent dans le répertoire
tags
du dépôt officiel de SPIP. Le script y fera référence en parlant derelease
.
Lors du choix de version que proposera le script, avant de décider d'une version précise, le script proposera de pré-sélectionner une de ces branches.
- Téléchargez le script dans le répertoire
/usr/local/bin
ou tout autre répertoire configuré dans votre$PATH
. - Le rendre exécutable ```chmod +x /usr/local/bin/spip_svn_loader``.
Alternativement, git clone https://github.com/JamesRezo/spip_svn_loader.git
et un lien symbolique ln -s `pwd`/spip_svn_loader/src/opt/spip-tools/bin/spip_svn_loader /usr/local/bin/spip_svn_loader
marche aussi bien...
Avec Homebrew pour les utilisateurs de Mac OS X:
brew tap JamesRezo/spip
brew install spip_svn_loader
ou bien pour mettre à jour:
brew upgrade spip_svn_loader
Sur plate-forme debian, en tant que root, taper les commandes :
echo "deb http://james.at.rezo.net/svn_spip/debs trusty main" > /etc/apt/sources.list.d/spip-tools.list
wget -O - http://james.at.rezo.net/svn_spip/JamesRezo.gpg.key | apt-key add -
apt-get update
apt-get install spip-tools
ou bien, pour mettre à jour:
apt-get update
apt-get upgrade spip-tools
Selon la distribution debian, remplacer trusty
, par precise
, wheezy
ou jessie
Sur plate-forme fedora (ou RedHat, CentOS, ...), en tant que root, taper les commandes :
rpm --import http://james.at.rezo.net/svn_spip/RPM-GPG-KEY-JamesRezo
curl -o /etc/yum.repos.d/spip-tools.repo http://james.at.rezo.net/svn_spip/spip-tools.repo
yum update spip-tools
yum install spip-tools
ou bien, pour mettre à jour:
yum upgrade spip-tools
Sur les distributions plus récentes, remplacer yum
par dnf
Dans le répertoire cible, taper spip_svn_loader
.
Le script tente de détecter la branche associée.
- Si la branche est maintenue, il proposera de faire une mise à jour (
svn up
) - Si la branche n'est plus maintenue (ou a été supprimée), il proposera de basculer vers une branche existante (
svn switch
)
Qu'il soit vide ou pas, le script tentera d'y installer (svn checkout
) la version choisie. S'il s'agit d'une release
, il proposera de détacher le répertoire du dépôt SVN (svn export
) mais vous pourrez refuser et attacher le répertoire au dépôt SVN (peut-être pour basculer vers une autre release dans le futur).
Si le répertoire est déjà associé à un dépôt SVN (working copy), le script tentera d'installer la version choisie dans un sous-répertoire spip
qui sera créé pour l'occasion. Comme ci-dessus, s'il s'agit d'une release
, la même proposition de détachement sera faite.
Le script proposera d'exécuter une "réparation" dans le cas où la commande précédente a provoqué une erreur. Cette procédure, qui nécessite la présence des utilitaires zip
et unzip
, tente, après avoir effectué un sauvegarde des données physiques de l'instance SPIP, de rétablir l'association avec le dépôt SVN, puis restaure les données sauvegardées.
Le script exploite, par défaut, une liste de branches que je considère comme utiles. Elle se trouve ici. Cette liste sera téléchargée (${HOME}/.spip/svn_loader_references.txt
) et mise à jour automatiquement quand la liste évoluera.
Ajouter le paramètre tout
pour accéder à toutes les branches et tous les tags SPIP disponibles sur le dépôt officiel: spip_svn_loader tout
Dans le cas d'une installation:
- le paramètre
--dev
installe la branche de développement, - le paramètre
--maintenance
, qui nécessite un paramètre correspondant à une version de maintenace (ex:2.1
,3.0
ou3.1
), installe une branche de maintenance, - le paramètre
--release
, qui nécessite un paramètre correspondant à une version stable (ex:3.1.1
ou2.1.29
) ou une version de test (ex:3.0.0-beta2
), installe une version "détachée" de SVN, - le paramètre
--detachee
associé à--dev
ou--maintenance
installe une branche de maintenance ou de développement "détachée" de SVN, - le paramètre
--attachee
associé à--release
installe une branche de maintenance ou de développement qui reste associée au tag du dépôt SVN.
Dans le cas d'une bascule:
- les paramètres
--dev
,--maintenance
et--release
permettent de procéder sans interaction à la bascule vers la branche souhaitée, - les paramètres
--attachee
et--detachee
ne sont pas pris en compte.