-
automatically create a SVN repository from a web project directory including trunk, branches and tags
-
#!/bin/bash
-
# Vous pouvez éditer ces variables selon vos besoins
-
SVN_ROOT=“/srv/unit1/svn”
-
SVN_TMP_PATH=“/tmp/svn”
-
$SVN_USER=“svn”
-
$SVN_GROUP=“svn”
-
# Ce script doit être executé avec les droits de superutilisateur
-
test –w /root;
-
if [ ! “$?” -eq “0” ]; then
-
echo “Vous devez executer ce script en tant que superutilisateur.”
-
exit 0
-
fi
-
echo “#######################################”
-
echo “Création d’un nouveau projet Subversion”
-
echo “#######################################”
-
echo “”
-
echo “Tapez le nom du nouveau projet :”
-
read PROJECT_NAME
-
if [ -z “$PROJECT_NAME” ]; then
-
echo “$PROJECT_NAME n’est pas un nom de projet valide.”;
-
exit 0
-
fi
-
echo “Tapez maintenant le chemin du répertoire source :”
-
echo “(Note: les répertoires trunk, branches et tags seront créés automatiquement)”
-
read PROJECT_SOURCE_PATH
-
if [ -z “$PROJECT_SOURCE_PATH” -o ! -d $PROJECT_SOURCE_PATH ]; then
-
echo “$PROJECT_SOURCE_PATH n’est pas un répertoire valide.”;
-
exit 0
-
fi
-
echo “Création du projet $PROJECT_NAME depuis $PROJECT_SOURCE_PATH…”
-
# Si le répertoire $SVN_ROOT n’existe pas, on le crée
-
if [ ! -d $SVN_ROOT ]; then
-
mkdir $SVN_ROOT
-
fi
-
# Si le répertoire $SVN_TMP_PATH n’existe pas, on le crée
-
if [ ! -d $SVN_TMP_PATH ]; then
-
mkdir $SVN_TMP_PATH
-
fi
-
# Création du répertoire du dépôt
-
mkdir $SVN_ROOT/$PROJECT_NAME
-
# Création d’un répertoire temporaire de stockage avant import
-
mkdir $SVN_TMP_PATH/$PROJECT_NAME
-
mkdir $SVN_TMP_PATH/$PROJECT_NAME/branches
-
mkdir $SVN_TMP_PATH/$PROJECT_NAME/tags
-
mkdir $SVN_TMP_PATH/$PROJECT_NAME/trunk
-
# Copie des fichiers originaux dans le répertoire temporaire
-
cp -R $PROJECT_SOURCE_PATH/* $SVN_TMP_PATH/$PROJECT_NAME/trunk/
-
# Création du dépôt et import depuis le répertoire créé
-
svnadmin create $SVN_ROOT/$PROJECT_NAME
-
svn import $SVN_TMP_PATH/$PROJECT_NAME file://$SVN_ROOT/$PROJECT_NAME -m “Initial import”
-
# Attribution des permissions à Apache sur le repertoire du dépot
-
chown -R $SVN_USER:$SVN_GROUP $SVN_ROOT/$PROJECT_NAME
-
# Suppression du répertoire temporaire
-
rm -rf $SVN_TMP_PATH/$PROJECT_NAME
-
# Done !
-
echo “”
-
echo “Projet subversion $PROJECT_NAME créé avec succès dans $SVN_ROOT/$PROJECT_NAME !”
-
-
Il faut bien entendu que la version de gcc demandée soit installée.
-
export CC=/usr/bin/gcc-4.1
-
-
Une option toute bête pour grep qui permet d’afficher en couleur l’expression recherchée dans le résultat. Ca ne casse pas trois pattes à un canard mais c’est sympa. Cela permet aussi de voir sur quelle partie du résultat, le match de l’expression s’est faite. C’est bien pour progresser et comprendre les regexp.
-
grep –color EXPRESSION [FICHIER]
-
-
Pensez a fixer les deux paramètres pathRepo et pathBackup. Merci de me laisser un commentaire si vous en sentez le besoin.
-
#!/bin/bash
-
# Script de sauvegarde incrémentale d’un dépôt subversion
-
# Il est possible de provoquer une sauvegarde complète en supprimant le dossier version ou son contenu
-
# Paramètres
-
# Chemin du dépôt à sauvegarder
-
pathRepo=“/chemin/repository”;
-
# Chemin du dossier de sauvegarde
-
pathBackup=“/chemin/dossier/sauvegarde”;
-
# Chemin du dossier pour mémoriser la dernière version sauvegardée
-
pathNumVersion=$pathBackup“/version”;
-
# Chemin du fichier de logs
-
pathLog=$pathBackup“/backup.log”;
-
# Nom du fichier (compris entre la date et l’extension)
-
fileName=“backup_svn”;
-
# Format de la date
-
# Pour le nom du fichier
-
dateFileFormat=“+%Y%m%d”;
-
# Pour le log
-
dateLogFormat=“+%Y-%m-%d %H:%M”;
-
# Vérifications
-
# Vérification de l’existence des dossiers de travail
-
if [ ! -d $pathBackup ]; then
-
echo “Dossier $pathBackup inexistant”;
-
exit 1;
-
fi
-
echo “[$(date “$dateLogFormat“)] Début de la sauvegarde” >> $pathLog;
-
# Création du dossier de la version si il n’existe pas
-
if [ ! -d $pathNumVersion ]; then
-
mkdir $pathNumVersion;
-
fi
-
numVersionLastBackup=$(ls $pathNumVersion);
-
if [ “$numVersionLastBackup” = “” ]; then
-
touch “$pathNumVersion/1”;
-
numVersionLastBackup=1;
-
fi
-
if [ $numVersionLastBackup -gt 1 ]; then
-
backupIncremental=” –incremental”;
-
typeBackup=“incr”;
-
else
-
typeBackup=“full”;
-
fi
-
# Vérification de l’existance du dépôt
-
if ! (svnlook info $pathRepo 2>>$pathLog 1>“/dev/null”) ; then
-
echo “[$(date “$dateLogFormat“)] ERREUR : Repository $pathRepo inexistant” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
-
exit 1;
-
fi
-
# Récupération de la dernière version présente dans le dépôt
-
youngestSvnVersion=$(svnlook youngest $pathRepo);
-
echo “[$(date “$dateLogFormat“)] Version la plus récente : $youngestSvnVersion” >> $pathLog;
-
if [ $numVersionLastBackup -gt $youngestSvnVersion ]; then
-
echo “[$(date “$dateLogFormat“)] La version la plus récente est la version sauvegardée, la sauvegarde n’est donc pas nécéssaire” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
-
exit 0
-
fi
-
# Lancement effectif de la sauvegarde
-
if (svnadmin dump -r$numVersionLastBackup:$youngestSvnVersion$backupIncremental $pathRepo 2>>$pathLog | bzip2 > “$pathBackup/$(date “$dateFileFormat“)_”$fileName“_”$typeBackup“_”$numVersionLastBackup“_to_”$youngestSvnVersion“.svndump.bz2”) ; then
-
echo “[$(date “$dateLogFormat“)] Mise à jour du numéro de version” >> $pathLog;
-
mv $pathNumVersion/$numVersionLastBackup $pathNumVersion/$(($youngestSvnVersion + 1));
-
else
-
echo “[$(date “$dateLogFormat“)] Erreur lors de la sauvegarde” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
-
exit 1;
-
fi
-
echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
-
exit 0
-
-
-
#Parfois vous pouvez vous simplifier la vie, il vous suffit de taper un des motifs suivants (source : “man sh”) :
-
!n #Rappelle la commande numéro “n”.
-
!-n #Rappelle la commande exécutée il y a “n” commande(s).
-
!! #Rappelle la dernière commande.
-
!chaine #Rappelle la commande la plus récente commençant par “chaine”.
-
!?chaine #Rappelle la commande la plus récente finissant par “chaine”.
-
!?chaine? #Rappelle la commande la plus récente contenant “chaine”.
-
#Ajoutez “:p” à la fin pour que la commande ne s’exécute pas.
-
^chaine1^chaine2^ #Répète la dernière commande en remplaçant chaine1 par chaine2.
-
!# #Rappelle la plus ancienne commande de l’historique.
-
commande !^ #Exécute “commande” avec le premier argument de la commande précédente.
-
commande !:n #Exécute “commande” avec l’argument numéro “n” de la commande précédente.
-
commande !:x-y #Exécute “commande” avec les arguments numéro “x” à “y” de la commande précédente.
-
commande !$ #Exécute “commande” avec le dernier argument de la commande précédente.
“bash” related tags
sox’s tags
administration ajaxterm apache apt apt-file automatize backup bash bell bips bnx2 clock Commande date debian editor EoN eth fat32 firefox gcc grep htaccess https hwconf ifcfg kernel killall linux MAC matériel memoire minimal mount mysql network ntp ntpd package paquet password php psmisc PuTTY quotas RAM regexp repository reseau routage route screensaver script setterm shell shell wifi ssh subversion svn synchronize synergy ubuntu UTF-8 vfat web windows xset
-