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

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen: