Générer un fichier de commandes SVN et GIT pour l’installation d’un ensemble de plugins à partir de ceux d’un SPIP existant - Documentation technique
- #!/bin/bash
- #
- # générer un sh avec les "svn checkout" ou "git clone" de tous les plugins d'un SPIP
- #
- # chaque ligne du fichier généré est de la forme:
- # svn co svn://zone.spip.org/spip-zone/_plugins_/nom_plugin nom_plugin
- # ou
- # git clone https://github.com/nom_repo/nom_plugin.git nom_plugin
- #
- # ce fichier sera lancé dans le rep plugins/ d'un SPIP que l'on veut munir des mêmes plugins
- #
- # chemin du répertoire des plugins du SPIP
- REP_PLUGINS=/var/www/mon_spip/plugins
- # chemin du fichier sh à créer
- FICHIER_SH=./dupliquer_plugins.sh
- # initialiser le fichier
- echo "# commandes des plugins a installer" > $FICHIER_SH
- for i in `ls $REP_PLUGINS`; do
- if [ -d $REP_PLUGINS/$i/.svn ]; then
- svn info $REP_PLUGINS/$i |sed -r -n '/^URL.:/{h;G;s/\n/ /;s/URL.:/svn co/1;s/\/trunk$//;s/\/branches\/[^\/]*$//;s/URL.*\///;p}' >> $FICHIER_SH
- fi
- if [ -d $REP_PLUGINS/$i/.git ]; then
- grep "url" $REP_PLUGINS/$i/.git/config |sed 's/.*url = /git clone /;s/.*\/\([^\/]*\).git$/\0 \1/' >> $FICHIER_SH
- fi
- done
- # passer le fichier sh en executable
- chmod +x $FICHIER_SH
Un autre script (SVN uniquement) via @Marcimat :
- #!/bin/bash
- #
- # Ce script crée un fichier `liste_svn_co.done.sh` contenant une liste
- # de commande svn checkout à faire pour retrouver la même arborescence
- #
- # Ceci sous-entend que seuls les répertoires à la racine du répertoire
- # d'exécution sont sous svn (pas de sous répertoire ayant lui même les répertoires SVN).
- # Tout répertoire non svn est ignoré.
- #
- # Ainsi, si le script est exécuté dans plugins/
- # Avec cette arbo cela fonctionnera :
- # - A
- # - B
- # - C
- # où A, B et C sont les répertoires issus d'un SVN quelconque.
- #
- # Mais *pas* avec cette arbo :
- # - themes/A
- # - themes/B
- # - C
- # Le répertoire 'themes' n'étant pas en SVN sera ici ignoré.
- #
- FILE='liste_svn_co.done.sh'
- ICI=$(pwd)
- rm -f $FILE;
- echo "#!/bin/bash" >> $FILE
- echo "#" >> $FILE
- echo "# Liste des svn co du répertoire :" >> $FILE
- echo "# "$ICI >> $FILE
- echo >> $FILE
- for i in $(ls); do
- if [ -d $i ]; then
- cd $i
- URL=$(svn info | grep URL | head -1 | cut -d ":" -f2-3)
- NOM=$(basename $i)
- cd ..
- if [ -n "$URL" ]; then
- echo "svn co"$URL $NOM >> $FILE;
- fi
- fi
- done
source https://tech.gamuza.fr/generer-un-f...