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 Mots-clés bash git spip svn 10 septembre 2017 #!/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 <code class='spip_code spip_code_inline' dir='ltr'>ls $REP_PLUGINS</code>; 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 <code class='spip_code spip_code_inline' dir='ltr'>liste_svn_co.done.sh</code> 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...