Subversion – Création d’une archive d’une ou plusieurs révisions

Un première version du script : Permet de créer un zip d’un intervalle de révisions pour un export.
Il reste des améliorations à faire c’est sûr, mais aujourd’hui cela répond à mes besoins du moment !

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/sh
# svndiff2zip.sh
 
# Vérifications
if [ ! $1 ];then echo "svndiff2zip : Pas de dépôt spécifié - obligatoire";exit;fi
if [ ! $2 ];then echo "svndiff2zip : Pas de révision de début spécifiée - obligatoire";exit;fi
if [ ! $3 ];then echo "svndiff2zip : Pas de révision de fin spécifiée - obligatoire";exit;fi
if [ ! $4 ];then echo "svndiff2zip : Pas de destination spécifiée - obligatoire";exit;fi
 
if [ -d $4 ];then echo "svnxport : le répertoire '$4' existe déjà : supprimer ou autre.";exit;fi
 
 
echo "Processing : source($1), revision start($2), revision end($3), target_directory($4)"
 
# Traitement
for myfile in `svn diff -r $2:$3 --summarize $1 | grep -e '^M ' -e '^A ' -e '^AM '`
do
if  [  "$myfile" = "M"  -o  "$myfile" = "AM" -o "$myfile" = "A" -o "$myfile" = "." -o -d $myfile ]
then
 continue
else 
 outfile=`echo $myfile |sed "s|$1||g"`
 dir="$4/$outfile"
 mkdir -p $(dirname $dir)
 
 svn export --force $myfile $4/$outfile >> /dev/null
 echo "export $4/$outfile "
 
 zip -r "$4.zip" $4 >> /dev/null
 
fi
done
Tagués avec : , ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.