Automatisiertes Anlegen eines Repository
Table of Contents
Auf dieser Seite wird ein Skript vorgestellt, womit ein automatisiertes Anlegen eines neuen Subversion-Repository möglich ist. Der Abschnitt Skript ausführen beschreibt die Anwendung, Aufbau des Skripts den Aufbau des eigentlichen Skripts. Das Skript selber steht unter der Public Domain und darf uneingeschränkt genutzt und verändert werden.
Skript ausführen
Bei uns wird das Skript unter dem Dateinamen create_new_repo geführt. Unser Stammverzeichnis für Repositories ist /svn/username. Das Skript erwartet als einzigen Parameter den absoluten Pfad des neuen Repository.
Das Skript muss als root, wie folgt, ausgeführt werden:
# sh create_new_repo /svn/username/foobar
Der Beispielordner username müsste dementsprechend durch den Username ersetzt werden, foobar würde der Name des neuen Repository sein.
{i} Bei ngopi liegt das Skript unter /root/bin und kann von jedem beliebigen Ort durch Aufruf das Skriptnamen ausgeführt werden (~# create_new_repo /svn/username/newrepo).
Aufbau des Skripts
Das Skript kann auch hier gedownloaded werden.
#!bin/sh # Filename: create_new_repo # Author: Matthias Holsten # Co-Author: Daniel Wojtucki # Date: 2009-01-07 # # The code is in the public domain and not copyrighted. if [ ! -n "$1" ] then echo "No parameter pass!" exit -1 fi if [ -d $1 ] then echo "The path you have pass, already exist!" exit -1 fi FOLDER=$1 SVNCONF=$FOLDER/conf/svnserve.conf LINE1="[general]" LINE2="anon-access = none" LINE3="auth-access = write" LINE4="realm = $FOLDER Repos." svnadmin create $FOLDER chmod -R o-rwx $FOLDER chmod -R g+rw $FOLDER chmod -R g+s $FOLDER/db chgrp -R svn $FOLDER echo $LINE1 | tee $SVNCONF echo $LINE2 | tee -a $SVNCONF echo $LINE3 | tee -a $SVNCONF echo $LINE4 | tee -a $SVNCONF echo "The repository is created: " $FOLDER
In den ersten Zeilen wird überprüft, ob der erste Parameter übergeben oder leer ist. Ist er gesetzt, wird geprüft ob das angegebene Verzeichnis nicht existiert, sonst bricht das Skript an dieser Stelle ab.
Die Zeile svnadmin create $FOLDER erzeugt das gewünschte Repository an der entsprechenden Stelle und baut die benötigte Struktur auf. Nachfolgend werden die richtigen Rechte auf den Repo-Ordner gesetzt, damit der SVN-User uneingeschränkt Zugriff hat.
Per chgrp -R svn $FOLDER wird das Repo der Gruppe svn hinzugefügt. Je nach Einstellung des Subversion ist hier die korrekte Bezeichnung für die Subversion-Gruppe anzugeben'''
Der nächste Kommando-Block erzeugt die korrekten Einträge für die svnserve.conf. Diese sind weiter oben in den Variablen LINE1 bis LINE4 definiert.
- LINE1: Der darauf folgende Code für das gesamte Repoitory gilt
- LINE2: Authentifizierte User dürfen nicht auf das Repositroy zugreifen
- LINE3: Gewährt authentifizierten Usern Schreibrechte
- LINE4: Der repräsentative Namen des Repositories für Clients
Das realm-Attribut hat besondere Bedeutung bei Verwendung von SASL. In diesem Skript wird der Einfachheit der echte Pfad zum Repository angegeben.
Die Rechte-Statements können mit none, read und write gesetzt werden. Im Schreibrecht ist das Leserecht mit inbegriffen.
Da wir unseren Subversion-Server nicht über HTTP betreiben, sondern das SVN-Protokoll über SSH tunneln, beachtet das Skript keine Passwort- oder Autorisierungs-Dateien'''
