Metainformationen zur Seite
Dies ist eine alte Version des Dokuments!
SVNC Skript
Skript zum Anlegen, Löschen, … von Subversion Repositories
- svnc
#!/bin/bash ############################################################################## # # Wrapper Script for svn command. # ############################################################################## # # JHE Development / IT-Service Huber, # Chiemgaustr. 20, # 83552 Evenhausen, # Germany # ############################################################################## SVNBASE="/srv/svn/repos" SVNEXEC="/usr/bin/svn" REPOFILE="/srv/www/vhosts/it-service-huber.de/subdomains/svn/httpdocs/include/repo_list.php" CONFIGDIR="/srv/svn/config" interactiveSelectCommands() { echo "" echo " Subversion (SVN) Administration " echo " =============================== " echo "" printf " 1 - empty Erstellt leeres Repository in SVN\n" printf " 2 - project Erstellt neues Projekt in SVN mit Grundstruktur\n" printf " 3 - delete Löscht Repository (ACHTUNG! Daten für immer verloren)\n" printf " 4 - deltify Deltify\n" printf " 5 - dump Speicher dump\n" printf " 6 - load Lade dump\n" printf " 7 - info Zeige Repository Infomrationen\n" printf " 8 - log Zeige Repository Logs\n" printf " u - adduser Erstelle neuen SVN-Benutzer oder aendere Passwort\n" echo "" echo " q - Abbruch" echo "" printf " Auswahl: " read sel case $sel in 1|empty) COMMAND="empty" ;; 2|project) COMMAND="project" ;; 3|delete) COMMAND="delete" ;; 4|deltify) COMMAND="deltify" ;; 5|dump) COMMAND="dump" ;; 6|load) COMMAND="load" ;; 7|info) COMMAND="info" ;; 8|log) COMMAND="log" ;; u|adduser) COMMAND="adduser" ;; q) exit; esac } getRepo() { if [ "$1" = "" ] then echo "" echo " Repository-Auswahl" echo " =============================== " echo "" repos=`find $SVNBASE -maxdepth 1 -type d -printf "%f\n"` cnt=0 for repo in $repos; do if [ "$cnt" = "0" ] then repolist[$cnt]=$repo else printf " $cnt:\t${repo} \n" repolist[$cnt]=$repo fi ((cnt=$cnt+1)); done echo "" echo " q - Abbruch" echo "" printf "\n Auswahl: " read sel if [ "sel" = "q" ] then exit; fi REPO=${repolist[$sel]} # echo "-> $REPO" # read hallo fi } createRepo() { if [ "$1" = "" ] then printf " Repository Name: " read REPO else REPO=$1 fi svnadmin create $SVNBASE/$REPO 1. kopiere svnserver.conf cp $CONFIGDIR/svnserve.conf $SVNBASE/$REPO/conf/svnserve.conf rm $SVNBASE/$REPO/conf/authz rm $SVNBASE/$REPO/conf/passwd printf " Repository Titel: " read title if [ "$title" = "" ] then title=$REPO fi printf "realm = $title" >>$SVNBASE/$REPO/conf/svnserve.conf chown -R svn:svn $SVNBASE/$REPO } createStructure() { REPO=$1 svn co file://$SVNBASE/$REPO /tmp/$REPO --username admin --password svn4pwd2 OldPWD=`pwd` cd /tmp cd $REPO mkdir tags mkdir work mkdir public mkdir work/docs mkdir work/source touch work/docs/Anforderungen.xls svn add * svn commit -m "Projekt $REPO angelegt" --username admin --password svn4pwd2 cd .. rm -rf $REPO cd $OldPWD } registerRepo() { REPO=$1 printf "\$config->addRepository(\'$title\', \'file://$SVNBASE/$REPO\');\n" >> $REPOFILE case $COMMAND in empty) ;; project) printf "\$config->setMinDownloadLevel(1, \'$title\');\n" >> $REPOFILE ;; esac printf "\n" >> $REPOFILE 1. rcsvn restart } editSvnFiles() { mcedit $REPOFILE mcedit $CONFIGDIR/authz } unregisterRepo() { printf "Bitte manuell austragen...\n"; } deleteRepo() { REPO=$1 printf " LÖSCHEN bitte mit JA bestätigen: " read ja if [ "$ja" = "JA" ] then rm -rf $SVNBASE/$REPO unregisterRepo $REPO echo " $REPO unwiederruflich gelöscht!" fi } deltifyRepo() { REPO=$1 svnadmin deltify -r 0:HEAD $SVNBASE/$REPO } dumpRepo() { REPO=$1 FILE=$2 if [ "$FILE" = "" ] then FILE=$SVNBASE/dump_$REPO fi svnadmin dump "$SVNBASE/$REPO" > "$FILE" } loadRepo() { REPO=$1 FILE=$2 if [ "$FILE" = "" ] then if [ -e "$SVNBASE/dump_$REPO" ] then svnadmin load $SVNBASE/$REPO < $SVNBASE/dump_$REPO else ls $SVNBASE printf " Dateinamen bitte angeben: " read file printf "\n" svnadmin load $SVNBASE/$REPO < $SVNBASE/$file fi else svnadmin load $SVNBASE/$REPO < $FILE fi } addUser() { USER=$1 PASSWD=$2 if [ "$USER" = "" ] then printf " Benutzernamen (Login): " read USER fi if [ "$PASSWD" = "" ] then printf " Passwort für \"$USER\": " read PASSWD fi htpasswd2 -b $CONFIGDIR/htusers $USER $PASSWD echo "$USER =$PASSWD" >> $CONFIGDIR/passwd mcedit $CONFIGDIR/passwd mcedit $CONFIGDIR/authz } COMMAND=$1 if [ "$COMMAND" = "" ] then interactiveSelectCommands else shift fi REPO=$1 FILE=$2 echo "$COMMAND $REPO $FILE" case $COMMAND in empty) createRepo $REPO registerRepo $REPO editSvnFiles ;; project) createRepo $REPO registerRepo $REPO createStructure $REPO editSvnFiles ;; delete) getRepo $REPO deleteRepo $REPO editSvnFiles ;; deltify) getRepo $REPO deltifyRepo $REPO ;; dump) getRepo $REPO shift dumpRepo $REPO $FILE ;; load) getRepo $REPO shift loadRepo $REPO $FILE ;; info) getRepo $REPO svn info svn://localhost/$REPO --username admin --password svn4pwd2 ;; log) getRepo $REPO svn log svn://localhost/$REPO --username admin --password svn4pwd2 ;; adduser) # REPO = Benutzername, FILE = Passwort addUser $REPO $FILE ;; esac
Diskussion