Creare velocemente repositories svn (shell) PDF Print E-mail
Written by Martino Vedana   
Monday, 27 September 2010 23:04
subversion_logo Se avete l'esigenza di creare frequentemente nuovi repositories svn con impostazioni uguali (ad esempio uno per ogni sito web che sviluppate) è sufficiente scrivere un semplice script bash che automatizzi i semplici comandi che vengono lanciati a mano centinaia di volte.


Lo script presuppone che:
  • tutti i repositories risiedano sotto un'unica directory (ad esempio /home/svn/repositories)
  • vi siano due directory conf e hooks che vengono usate come master che verranno linkate in tutti i repositories creati

la struttura delle directory è quindi del tipo:

/home/svn/repositories
/home/svn/repositories/hooks
/home/svn/repositories/conf
/home/svn/repositories/repo1
/home/svn/repositories/repo2
/home/svn/repositories/repo3
         ....


Lo script creerà i vari repository repo4, repo5, repo6, etc... creando un link simbolico alle directory hooks e conf in modo che una qualsiasi modifica ai files in una delle directory verrà automaticamente applicata a tutti i repository creati (ad esempio la password di un utente)

nella directory /etc/bin/ creare un file con il seguente contenuto:

#! /bin/bash
echo -n "Specifica un nome repository SENZA SPAZI E CARATTERI SPECIALI (solo lettere e numeri)"
read -e NAME

DIRECTORY="/repositories/"
if [ -d "$DIRECTORY" ]; then
  cd $DIRECTORY

  if [ ! -d "$NAME" ]; then
# Control will enter here if $DIRECTORY doesn't exist
    /usr/bin/svnadmin create $NAME

    if [ -d "$DIRECTORY/$NAME" ]; then

      cd $DIRECTORY/$NAME

      rm conf -Rf

      rm hooks -Rf

      ln -s ../hooks

      ln -s ../conf
      echo "repository creato"
    else

      echo "Si e' verificato un errore durante la procedura di creazione del repository"

    fi

  else

    echo "Attenzione! il repository specificato gia' esiste"

  fi
else
  echo "Attenzione! la directory $DIRECTORY non esiiste"

fi

Modificare la directory /repositories/ presente nel file (in grassetto) con quella che si utilizza (e che contirne le duedirectory conf ed hook guida)
Rendere eseguibile il file :

chmod +x /usr/bin/./createRepository.sh


Ora è possibile eseguire il file

/usr/bin/./createRepository.sh