Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| anleitung:web:web_server:svnc [05.09.2014 07:49] – J. Huber | anleitung:web:web_server:svnc [09.09.2014 06:56] (aktuell) – gelöscht J. Huber | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== SVNC Skript ====== | ||
| - | |||
| - | Skript zum Anlegen, Löschen, … von Subversion Repositories | ||
| - | |||
| - | svnc | ||
| - | |||
| - | <code bash> | ||
| - | #!/bin/bash | ||
| - | ############################################################################## | ||
| - | # | ||
| - | # Wrapper Script for svn command. | ||
| - | # | ||
| - | ############################################################################## | ||
| - | # | ||
| - | # JHE Development / IT-Service Huber, | ||
| - | # Chiemgaustr. 20, | ||
| - | # 83552 Evenhausen, | ||
| - | # Germany | ||
| - | # | ||
| - | ############################################################################## | ||
| - | |||
| - | SVNBASE="/ | ||
| - | SVNBASEURL=" | ||
| - | SVNEXEC="/ | ||
| - | CONFIGDIR="/ | ||
| - | WEBCONFIGDIR="/ | ||
| - | BACKUPDIR="/ | ||
| - | BACKUPSCRIPT="/ | ||
| - | REPOFILE=" | ||
| - | SVNADMINUSER=" | ||
| - | SVNADMINPASSWD=" | ||
| - | AUTHZFILENAME=" | ||
| - | USERFILENAME=" | ||
| - | GROUPDEVELOPER=" | ||
| - | |||
| - | quit() | ||
| - | { | ||
| - | clear | ||
| - | exit | ||
| - | } | ||
| - | |||
| - | interactiveSelectCommands() | ||
| - | { | ||
| - | clear | ||
| - | 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 - dump Repository dump\n" | ||
| - | printf " 5 - load Repository wiederherstellen\n" | ||
| - | printf " 6 - info Zeige Repository Infomrationen\n" | ||
| - | printf " 7 - log Zeige Repository Logs\n" | ||
| - | printf " 8 - list Zeige Repository Inhalt\n" | ||
| - | printf " u - adduser Erstelle neuen SVN-Benutzer oder aendere Passwort\n" | ||
| - | printf " t - tag/branch Erstelle einen Tag oder Branch\n" | ||
| - | |||
| - | echo "" | ||
| - | echo " editCfg | ||
| - | echo "" | ||
| - | echo " q - Abbruch" | ||
| - | echo "" | ||
| - | |||
| - | |||
| - | printf " Auswahl: " | ||
| - | read sel | ||
| - | |||
| - | case $sel in | ||
| - | 1|empty) COMMAND=" | ||
| - | ;; | ||
| - | 2|project) COMMAND=" | ||
| - | ;; | ||
| - | 3|delete) COMMAND=" | ||
| - | ;; | ||
| - | 4|dump) COMMAND=" | ||
| - | ;; | ||
| - | 5|load) COMMAND=" | ||
| - | ;; | ||
| - | 6|info) COMMAND=" | ||
| - | ;; | ||
| - | 7|log) COMMAND=" | ||
| - | ;; | ||
| - | 8|list) COMMAND=" | ||
| - | ;; | ||
| - | u|adduser) COMMAND=" | ||
| - | ;; | ||
| - | t|tag|branch) COMMAND=" | ||
| - | ;; | ||
| - | reconfig) COMMAND=" | ||
| - | ;; | ||
| - | editCfg) COMMAND=" | ||
| - | ;; | ||
| - | q) | ||
| - | quit | ||
| - | ;; | ||
| - | esac | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | getRepo() | ||
| - | { | ||
| - | clear | ||
| - | if [ " | ||
| - | then | ||
| - | echo "" | ||
| - | echo " Repository-Auswahl" | ||
| - | echo " =============================== " | ||
| - | echo "" | ||
| - | |||
| - | repos=`find $SVNBASE -maxdepth 1 -type d -printf " | ||
| - | cnt=0 | ||
| - | |||
| - | for srepo in $repos; | ||
| - | do | ||
| - | if [ " | ||
| - | then | ||
| - | repolist[$cnt]=$srepo | ||
| - | else | ||
| - | printf " $cnt: | ||
| - | repolist[$cnt]=$srepo | ||
| - | fi | ||
| - | ((cnt=$cnt+1)); | ||
| - | done | ||
| - | |||
| - | echo "" | ||
| - | echo " q - Abbruch" | ||
| - | echo "" | ||
| - | |||
| - | printf "\n Auswahl: " | ||
| - | read sel | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | quit | ||
| - | fi | ||
| - | |||
| - | REPO=${repolist[$sel]} | ||
| - | echo " -> $REPO" | ||
| - | # read hallo | ||
| - | fi | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | createRepo() | ||
| - | { | ||
| - | if [ " | ||
| - | then | ||
| - | printf " Repository Name: " | ||
| - | read REPO | ||
| - | else | ||
| - | REPO=$1 | ||
| - | fi | ||
| - | |||
| - | svnadmin create $SVNBASE/ | ||
| - | |||
| - | printf " Repository Titel: " | ||
| - | read title | ||
| - | if [ " | ||
| - | then | ||
| - | title=$REPO | ||
| - | fi | ||
| - | |||
| - | chown -R www-data: | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | createStructure() | ||
| - | { | ||
| - | REPO=$1 | ||
| - | svn co file:// | ||
| - | OldPWD=`pwd` | ||
| - | cd /tmp | ||
| - | cd $REPO | ||
| - | mkdir tags | ||
| - | mkdir work | ||
| - | mkdir public | ||
| - | mkdir work/docs | ||
| - | mkdir work/source | ||
| - | touch work/ | ||
| - | svn add * | ||
| - | svn commit -m " | ||
| - | cd .. | ||
| - | rm -rf $REPO | ||
| - | cd $OldPWD | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | registerRepo() | ||
| - | { | ||
| - | REPO=$1 | ||
| - | |||
| - | # register in WebSVN | ||
| - | printf " | ||
| - | |||
| - | case $COMMAND in | ||
| - | empty) | ||
| - | ;; | ||
| - | project) | ||
| - | printf " | ||
| - | ;; | ||
| - | esac | ||
| - | |||
| - | printf " | ||
| - | |||
| - | # register in AUTHZ file | ||
| - | printf " | ||
| - | cp -f $CONFIGDIR/ | ||
| - | |||
| - | # register for backup | ||
| - | printf " | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | editSvnFiles() | ||
| - | { | ||
| - | mcedit $REPOFILE | ||
| - | mcedit $CONFIGDIR/ | ||
| - | cp -f $CONFIGDIR/ | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | unregisterRepo() | ||
| - | { | ||
| - | printf "Bitte manuell austragen...\n"; | ||
| - | } | ||
| - | |||
| - | deleteRepo() | ||
| - | { | ||
| - | REPO=$1 | ||
| - | |||
| - | printf " LÖSCHEN bitte mit JA bestätigen: | ||
| - | read ja | ||
| - | if [ " | ||
| - | then | ||
| - | rm -rf $SVNBASE/ | ||
| - | unregisterRepo $REPO | ||
| - | echo " $REPO unwiederruflich gelöscht!" | ||
| - | fi | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | dumpRepo() | ||
| - | { | ||
| - | REPO=$1 | ||
| - | FILE=$2 | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | FILE=$BACKUPDIR/ | ||
| - | |||
| - | if [ ! -d " | ||
| - | mkdir $BACKUPDIR/ | ||
| - | fi | ||
| - | fi | ||
| - | |||
| - | svnadmin dump " | ||
| - | gzip -f9 $FILE | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | loadRepo() | ||
| - | { | ||
| - | REPO=$1 | ||
| - | FILE=$2 | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | if [ -e " | ||
| - | then | ||
| - | svnadmin load $SVNBASE/ | ||
| - | else | ||
| - | ls -1 $BACKUPDIR/ | ||
| - | printf " Dateinamen bitte angeben (ohne Endung .gz): " | ||
| - | read file | ||
| - | gunzip -kc $BACKUPDIR/ | ||
| - | svnadmin load $SVNBASE/ | ||
| - | rm $BACKUPDIR/ | ||
| - | printf " | ||
| - | fi | ||
| - | else | ||
| - | gunzip -kc $FILE > $BACKUPDIR/ | ||
| - | svnadmin load $SVNBASE/ | ||
| - | rm $BACKUPDIR/ | ||
| - | printf " | ||
| - | fi | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | addUser() | ||
| - | { | ||
| - | USER=$1 | ||
| - | PASSWD=$2 | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | echo | ||
| - | cat $CONFIGDIR/ | ||
| - | echo | ||
| - | printf " Benutzername (Login): " | ||
| - | read USER | ||
| - | fi | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | printf " Passwort für \" | ||
| - | read PASSWD | ||
| - | fi | ||
| - | |||
| - | htpasswd -b $CONFIGDIR/ | ||
| - | |||
| - | mcedit $CONFIGDIR/ | ||
| - | |||
| - | cp -f $CONFIGDIR/ | ||
| - | cp -f $CONFIGDIR/ | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | cpRepo() | ||
| - | { | ||
| - | clear | ||
| - | REPO=$1 | ||
| - | |||
| - | cpDirList=`svnlook tree $SVNBASE/ | ||
| - | cnt=0 | ||
| - | |||
| - | printf " | ||
| - | for sdir in $cpDirList; | ||
| - | do | ||
| - | if [ " | ||
| - | then | ||
| - | dirlist[$cnt]=$sdir | ||
| - | else | ||
| - | printf " $cnt: | ||
| - | dirlist[$cnt]=$sdir | ||
| - | fi | ||
| - | ((cnt=$cnt+1)); | ||
| - | done | ||
| - | |||
| - | echo "" | ||
| - | echo " q - Abbruch" | ||
| - | echo "" | ||
| - | |||
| - | printf " Quelle: " | ||
| - | read SOURCE | ||
| - | if [ " | ||
| - | then | ||
| - | quit | ||
| - | fi | ||
| - | SOURCE=${dirlist[$SOURCE]} | ||
| - | |||
| - | printf " -> $SOURCE \n Ziel: " | ||
| - | read TARGET | ||
| - | if [ " | ||
| - | then | ||
| - | quit | ||
| - | fi | ||
| - | TARGET=${dirlist[$TARGET]} | ||
| - | |||
| - | printf " -> $TARGET \n Tag/ | ||
| - | read NAME | ||
| - | if [ " | ||
| - | then | ||
| - | quit | ||
| - | fi | ||
| - | |||
| - | |||
| - | svn copy $SVNBASEURL/ | ||
| - | |||
| - | return | ||
| - | } | ||
| - | |||
| - | reconfig() | ||
| - | { | ||
| - | clear | ||
| - | echo -e " | ||
| - | cp $BACKUPDIR/ | ||
| - | chmod a+x /bin/svnc | ||
| - | chown root:root /bin/svnc | ||
| - | |||
| - | echo -e "Copy authz files from $CONFIGDIR to $WEBCONFIGDIR ... \n" | ||
| - | cp -f $CONFIGDIR/ | ||
| - | cp -f $CONFIGDIR/ | ||
| - | |||
| - | exit | ||
| - | } | ||
| - | |||
| - | if [ ! -e "/ | ||
| - | then | ||
| - | reconfig | ||
| - | fi | ||
| - | |||
| - | |||
| - | COMMAND=$1 | ||
| - | |||
| - | if [ " | ||
| - | then | ||
| - | interactiveSelectCommands | ||
| - | else | ||
| - | shift | ||
| - | fi | ||
| - | |||
| - | REPO=$1 | ||
| - | FILE=$2 | ||
| - | |||
| - | echo " | ||
| - | |||
| - | case $COMMAND in | ||
| - | empty) | ||
| - | createRepo $REPO | ||
| - | registerRepo $REPO | ||
| - | editSvnFiles | ||
| - | ;; | ||
| - | project) | ||
| - | createRepo $REPO | ||
| - | registerRepo $REPO | ||
| - | createStructure $REPO | ||
| - | editSvnFiles | ||
| - | ;; | ||
| - | delete) | ||
| - | getRepo $REPO | ||
| - | deleteRepo $REPO | ||
| - | editSvnFiles | ||
| - | ;; | ||
| - | dump) | ||
| - | getRepo $REPO | ||
| - | shift | ||
| - | dumpRepo $REPO $FILE | ||
| - | ;; | ||
| - | load) | ||
| - | getRepo $REPO | ||
| - | shift | ||
| - | loadRepo $REPO $FILE | ||
| - | ;; | ||
| - | info) | ||
| - | getRepo $REPO | ||
| - | svn info $SVNBASEURL/ | ||
| - | ;; | ||
| - | log) | ||
| - | getRepo $REPO | ||
| - | svn log $SVNBASEURL/ | ||
| - | ;; | ||
| - | list) | ||
| - | getRepo $REPO | ||
| - | svn list -v --depth files --recursive $SVNBASEURL/ | ||
| - | ;; | ||
| - | adduser) | ||
| - | # REPO = Benutzername, | ||
| - | addUser $REPO $FILE | ||
| - | ;; | ||
| - | copy) | ||
| - | getRepo $REPO | ||
| - | cpRepo $REPO | ||
| - | ;; | ||
| - | reconfig) | ||
| - | reconfig | ||
| - | ;; | ||
| - | editCfg) | ||
| - | editSvnFiles | ||
| - | ;; | ||
| - | quit) | ||
| - | quit | ||
| - | ;; | ||
| - | esac</ | ||
| - | |||
| - | |||
| - | ---- struct data ---- | ||
| - | ---- | ||