Accueil > ... > Forum 67

Subversion : export des fichiers depuis une révision en bash

4 février 2010, 13:27, par XDjuj

Bonjour et merci pour ta petite contribution.

Je me suis rendu compte que mon besoin n’était pas le tiens et j’ai scripté ma propre boucle, mais je pense que nos problématiques se rejoignent.

Ma problématique est d’exporter dans une une archive ZIP le contenu d’un DIFF entre deux versions (pour MAJ via FTP/SSH par exemple) que je puisse envoyer par mail.

Voilà le bout de code que je me suis donc pondu après lecture de ton article :)

Il est peut être nécessaire d’affiner le pattern du awk à l’affichage réel obtenu dans vos conditions (c’est l’espace entre la "lettre" et le nom du fichier) qui varie peut être d’une console/distrib à l’autre.

Ainsi, en le mettant dans un des répertoires du PATH ou en l’ajoutant comme alias dans un .profile par exemple : "alias zipdiff=’sh /CHEMIN/VERS/zipdiff.sh"
Je peux l’utiliser depuis le dossier concerné juste après un svn up par exemple.

En espérant qu’il puisse servir à d’autres !

Bonne journée.

XDjuj.

#!/bin/sh
###
# zipdiff.sh
# ZIPPER les fichiers (et l'arbo correspondante) entre deux versions SVN
###
# Usage depuis le dossier actif : sh zipdiff.sh revMIN revMAX
# Régler l'entrée
if [ ! $1 ];then echo "Usage : sh zipdiff.sh revMIN revMAX";exit;fi
if [ ! $2 ];then echo "Usage : sh zipdiff.sh revMIN revMAX";exit;fi
# Définir les petites variables qui vont bien
DATE=date +%Y%m%d-%Hh%Mm%Ss;
NOM=${DATE}-DIFF-$1_$2;

# Boucler et zipper sur le dossier actif
for ladiff in svn diff -r$1:$2 --summarize | grep -e '^M' -e '^A' | awk -F"       " '{print $2}'
do
zip -r .zip $ladiff
done
# Exporter les logs (comme ça on voit AUSSI s'il y a eu des REMOVE)
echo "${DATE} : DIFF entre $1 et $2" > ${NOM}.log;
svn diff -r$1:$2 --summarize >> ${NOM}.log
zip ${NOM}.zip ${NOM}.log