Subversion trifft Leopard: SVN Konfiguration für OS X 10.5
Samstag, 10. Januar 2009 | Autor: David Krcek
Werden Entwicklungsprojekte grösser als gedacht, arbeiten gar mehrere Entwickler an einem Projekt so ist spätestens bei der Zusammenführung von Änderung Chaos angesagt. Um das zu umgehen gibt es verschiedene Tools zur Versionskontrolle. Das wohl bekannteste CVS dürfte dem einen oder anderen schon untergekommen sein. Subversionvon tigris.org ist ein weiteres Tool zur Versionskontrolle, welches einige Unterschiede zum CVS hat.
So schreibt Wikipedia: “Subversion wurde als moderne Ablösung für das mit vielen Schwächen behaftete, in Entwicklerkreisen aber weiterhin sehr verbreitete ProgrammCVSentwickelt. Deshalb ist es in der Bedienung sehr ähnlich gehalten, behebt aber einige Schwächen von CVS. So ist es mit Subversion z.B. möglich, Dateien oder Verzeichnisse zu verschieben oder umzubenennen, ohne die Versionsgeschichte zu verlieren“
Neben den Sourcen zum selbständigen Kompilieren, stellt collabnet auch die Pakete für Fink und MacPort, sowie fertige Universal Binary Pakete bereit.
Aber der Reihe nach, als erstes stellen wir die Umgebung einmal vor:
- Auf “frodo” soll später das Repository liegen, das unsere Daten hält. “frodo” ist ein Leopard Server 10.5.6, es geht auch die Arbeitsplatzversion der Raubkatze.
- Auf “riddick” liegen die lokalen Arbeitskopien mit denen gerarbeitet wird, “riddick” ist einer von mehreren Entwickler Mac’s.
- Wir legen unser Repository unter /SharedItems/subversion/repositories ab.
Da “riddick” öfter einmal unterwegs ist muss er sich von ausserhalb mit “frodo” unterhalten können. Für die Konfiguration sollte man etwas mit dem Terminal umgehen können, aber wer das nicht kann wird wohl wenig Verwendung für einen Subversion Server haben.
1. Die Installation: Sowohl für “frodo”, wie auch für “riddick”, benötigen wir dieSubversion Binariesfür den aktuellen Stand 1.5.4.
Nach dem Ausfüllen des Formulars wird die ca. 15.5 MB große Datei Subversion-1.5.4.dmg heruntergeladen.
Das DMG mit Doppelklick öffnen und die Subversion-1.5.4.pkg Installationsdatei starten.
Die Installation müsste in etwa so ablaufen.
|
|
||
|
![]() |
Wichtig hierbei ist das Bild zwei, denn die Pakete von collabnet legen alle notwendigen Dateien unter /opt/subversion.
Damit auch die richtige Version gezogen wird muss über die PATH Variable das richtige Verzeichnis gesetzt werden. Dafür gibt es mehre Wege, einer davon ist die Datei /private/etc/profile zu editieren.
vi /private/etc/profile export PATH=/opt/subversion/alias:/opt/subversion/bin:$PATH
Danach neu anmelden oder
source /private/etc/profile
eingeben.
Wenn alles geklappt hat, sollte die Ausgabe des folgenden Kommandos so aussehen
frodo:etc dkr$ svn --version svn, version 1.5.4 (r33841) compiled Oct 27 2008, 11:19:10 Copyright (C) 2000-2008 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/)....
Damit ist Subversion erfolgreich installiert und wir können uns an die Konfiguration machen.
2. Konfiguration SVN
2.1 SSH Schlüssel
Für die Kommunikation zwischen Server und Client will ich hier das svn-Protokol durch einen SSH Tunnel verwenden.
Dafür benötige ich als erstes den öffentlichen Schlüssel von “riddick”. Eine gute Anleitung gibt es hier, im wesentlichen sind hier folgende Schritte nötig:
riddick:~ david$ ssh-keygen -b 2048 -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/david/.ssh/id_rsa): Mit Enter weiter Enter passphrase (empty for no passphrase): Mit Enter weiter Enter same passphrase again: Mit Enter weiter Your identification has been saved in /Users/david/.ssh/id_rsa. Your public key has been saved in /Users/david/.ssh/id_rsa.pub. The key fingerprint is: 2f:85:ae:48:ef:ae:0f:36:ae:39:2a:9c:6f:90 david@riddick.local The key's randomart image is: +--[ RSA 2048]----+
Im Verzeichniss /Users/.ssh liegen nun die zwei gerade erzeugten Dateien. Die Datei id_rsa ist der private Schlüssel und darf nie jemanden ausgehändigt werden. Am besten sichert man sich diesen auch nochmal extra.
Die Datei id_rsa.pub ist der öffentliche Schlüssel den wir gleich auf “frodo” kopieren.
scp id_rsa.pub frodo:/Users/admin
2.2 Benutzer für Subversion anlegen und anpassen
Mit den Arbeitsgruppenmanager melden wir uns jetzt an “frodo” an und erstellen eine SVN Benutzer.

Damit überhaupt der SSH Zugang möglich ist, müssen wir auf “frodo” die “entfernte Verwaltung” aktiveren.
Bei Arbeitsplatzversionen findet man diese Funktion in der Systemsteuerung->Sharing.

Bei der Serverversion können wir das über den Servermanager erledigen. Nun können wir das Terminal auf “riddick” öffnen und an “frodo” anmelden.
Um die Public-Key Authentifizierung zu testen wird jetzt der öffentliche Schlüssel in die authorized_keys eingegetragen.
ssh admin@frodo The authenticity of host 'frodo (10.0.0.8)' can't be established. RSA key fingerprint is da:5d:a2:54:98:aa:9a:23:b2:18:73:11:31:57:9e:3d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'frodo,10.1.1.8' (RSA) to the list of known hosts. Password: Last login: Thu Jan 1 18:01:17 2009 from 10.0.0.50
Damit könen wir uns nun ohne Passwort an “frodo” anmelden. Da alle Benutzer über einen OS User die Änderungen vornehmen sollen, müssen wir wir das ganze auf auf den SVN-User anwenden
frodo:~ admin$ sudo bash Password:
Damit werden wir der root-User
bash-3.2# cat /Users/admin/id_rsa.pub >> /Users/svn/.ssh/authorized_keys
und fügen unseren öffentlichen Schlüssel den bekannten Schlüsseln des Users svn hinzu. Jetzt müssen wir die Datei /Users/svn/.ssh/authorized_keys um einige Einstellungen erweitern.
Aus der Zeile
ssh-rsa AAAAB3NzaSDFSDF...Viele Zeichen ... == switch2mac@riddick.localwird nun die Zeile
command="/opt/subversion/alias/svnserve -t --tunnel-user=switch2mac", no-port-forwarding, no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAAB3NzaS ... Viele Zeichen ... == switch2mac@riddick.local
Der Zeilenumbruch ist nur hier im Blog.
2.3 Subversion Scripte Damit wir gleichzeitig mehrere subversion Prozesse starten können und uns nicht die Installation zu zerstören müssen
wir noch für die wesentlichen Kommandos kleine Skripte schreiben, die die umask anpassen.Genauer müssen wir die Scripte für svnadmin, svnlook, svnserve anpassen.
Da wir weiter oben schon die Pfadvariable auf /opt/subversion/alias gesetzt haben legen wir diese in dem Verzeichnis an.
Die Scripte sehen so aus:
svnadmin
#!/bin/sh umask 002 /opt/subversion/bin/svnadmin "$@"
svnlook
#!/bin/sh umask 002 /opt/subversion/bin/svnlook "$@"
svnserve
#!/bin/sh umask 002 exec /opt/subversion/bin/svnserve -r /SharedItems/subversion/repositories "$@"
3.0 Anlegen des Repositories
frodo:~ admin$ sudo bash Password:
Damit werden wir der root-User und Erstellen das subversion Verzeichnis:
cd /SharesItems mkdir subversion cd subversion mkdir repositories chgrp -R subversion repositories mkdir ./repositories/projekt chown -R svn:subversion ./repositories/projekt svn create /SharesItems/subversion/repositories/projekt chmod 770./repositories/projekt cd projekt chmod g+t db
Jetzt müssen wir nur noch die Rechte für den Zugriff pflegen.
vi ./repositories/projekt/conf/svnserve.conf [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. #anon-access = read #auth-access = write
wie folgend abändern:
[general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = none auth-access = write
Wenn alles geklappt hat sollte jetzt der Zugriff von “riddick” funktionieren:
svn list svn+ssh://svn@frodo/projekt
Bei Fragen die Kommentarfunktion verwenden.






