Kurze Einführung in Subversion (svn)
Hier stehen die wichtigsten Unix-Befehle, die man benötigt, um mit Subversion zu arbeiten. Als Beispiel dient das Accounting-Skript auf dem Druckserver gutenberg.
Voraussetzung ist eine lokale Instalation eines Subversion-Clients. Desweiteren gibt es auch eine Reihe weiterer graphischer Oberflächen zur Arbeit mit Subversion, auf die hier aber nicht eingegangen wird (Weitere Informationen unter
http://subversion.tigris.org/).
Inhalt
Anwendung
Begriffe
- Repository: Das zentrale Verzeichnis, in dem alle Daten gespeichert werden.
- <URL> Der URL des Repositories also z.B. https://svn.imp.fu-berlin.de/technix/
- <LOCAL> Die lokale Kopie einer Datei im Repository
typischer Workflow
- Start-Verzeichnis
cd /wo/auch/immer/das/Zeug/hin/soll/
(z.B. cd ~user/tmp/)
- Auschecken
svn checkout <URL> [PFAD]
(z.B: svn checkout https://svn.imp.fu-berlin.de/technix/beispiel/ bsplokal)
- Editieren (z.B: vim bsplokal/meinedatei.txt)
- Einchecken
svn commit [LOCAL]
(z.B. svn commit -m "mein Kommentar" bsplokal/meinedatei.txt)
- Update der Änderungen anderer Benutzer
svn update
svn-Befehle
svn <BEFEHL> [ARGUMENTE]
BEFEHL |
Erklärung |
help |
zeigt eine Hilfe zu einem Befehl an, der als Argument gegeben ist |
info |
zeigt ein paar Infos zum Repository |
list |
zeigt vorhandene Verzeichnisse im Repository |
checkout |
holt Datei/Verzeichnis aus dem Repository |
commit |
schreibt Datei/Verzeichnis in das Repository |
update |
holt neueste Version aus dem Repository |
status |
zeigt Status (lokal verändert/up to date/needs merge ...) |
diff |
zeigt Unterschied zwischen lokaler Version und Version im Repository |
mkdir |
erzeugt neues Verzeichnis im Repository (Bewirkt dasselbe wie ein lokales mkdir + commit) |
revert |
bringt die als Argument gegebene(n) Datei(en) wieder in den ursprünglichen Zustand |
Administration
Beispiel AuthzSVNAccessFile für Kerberos Authentifizierung
Inhalt von
AuthzSVNAccessFile
:
-----------------------------cut--------------------------------------------------
[groups]
MyGroup = klaus@FU-BERLIN.DE, otto@FU-BERLIN.DE, emil@MI.FU-BERLIN.DE
[/]
* =
user@FU-BERLIN.DE = r
[/beispiel]
user@FU-BERLIN.DE = rw
@MyGroup = rw
[/schreiben/stability]
user@FU-BERLIN.DE = rw
[/schreiben/stability/trunk]
otto@FU-BERLIN.DE = rw
----------------------------cut----------------------------------------------------
Diese Beispieldatei ist für Kerberos-Auth gedacht.
Beispiel AuthzSVNAccessFile für basic-auth =(ldap und file) Authentifizierung
Für Basic-Auth(d.h. LDAP oder FILE) mit htpasswd lässt man einfach die "@FU-BERLIN.DE" weg.
Das liegt unter einem dieser Plätze:
-
/web/projects.mi.fu-berlin.de/htdocs/data/AuthzSVNAccessFile
-
/import/svn_auth/$NEW_REPOS
(auf allen linux-rechnern)
-
\\web\svn_auth\$NEW_REPOS
(auf windows-rechnern)
-
/import/svn_auth/$NEW_REPOS/AuthzSVNAccessFile
# wer darf was
-
/import/svn_auth/$NEW_REPOS/AuthUserFile
# externe user-namen und passworte
Bitte keine Kommentare verwenden, und natürlich nicht die beiden Zeilen mit ---cut--- mitkopieren.
Die
MyGoup Zeile darf nicht umgebrochen werden d.h. sie besteht aus einer Zeile.
Achtung, der User otto hat auf
https://svn.imp.fu-berlin.de/$NEW_REPOS keinen Schreib-Zugriff, sondern nur unter
https://svn.imp.fu-berlin.de/$NEW_REPOS/schreiben/stability/trunk
Erster test z.B. mit
svn info <URL>
( z.B: svn info
https://svn.imp.fu-berlin.de/technix)
Zweiter test mit
svn list <URL>
( z.B: svn list
https://svn.imp.fu-berlin.de/technix)
Infos zu htpasswd
Etwas unübersichtlich, aber vollständig
Wie mache ich das selbst?
-
cd /import/svn_auth/$NEW_REPOS
(auf allen linux-rechnern) \\web\svn_auth\$NEW_REPOS
-
htpasswd -c AuthUserFile otto
Fragt nach dem Passwort für otto und erstellt(create) die Passwortdatei mit dem Namen AuthUserFile. Diesen Befehl nur für den ersten User benutzen.
-
htpasswd AuthUserFile emil
Fragt nach dem Passwort für emil und fügt eine Zeile an die Datei AuthUserFile an. Diesen Befehl für alle weiteren User benutzen.
Wer Unix-fest ist kann sich von seinen Usern auch fertige htpasswd zeilen schicken lassen und sie dann an die Datei
AuthUserFile anhängen. Man muss allerdings dabei auf die Zeilenenden(Unix) achten, sonst funktionieren die Passworte nicht.
Links