Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

development:subversion

Subversion

Subversion ist ein verbreitetes System zur Versionskontrolle, das natürlich auch bei Uberspace.de verfügbar ist. Der O'Reilly-Verlag war so freundlich, sein empfehlenswertes Buch zum Thema unter svnbook.org unter einer freien Lizenz zu veröffentlichen.

Wir können dir hier keine Einführung in Subversion allgemein liefern - dafür ist das Kapitel Subversion in Action im Handbuch besser geeignet. Wir wollen dir aber gerne einen kurzen Überblick geben, wie du Subversion bei Uberspace.de benutzen kannst, sowohl als Client (um mit Projekten zu arbeiten, die anderswo als Repository bereitgestellt werden) als auch als Server (um selbst ein Repository bereitzustellen).

Subversion als Client

Wir stellen dir den Befehl svn zur Verfügung, mit dem du auf Repositories zugreifen kannst. Ein Repository ist dabei immer unter einer URL erreichbar; typischerweise unter http:// oder https:// (WebDAV), oder aber auch unter svn://, wenn das Repository via svnserve bereitgestellt wird. Ein lokales Repository kannst du mit einer file://-URL ansprechen. So kannst du beispielsweise Subversion selbst mittels svn ins Verzeichnis subversion auschecken:

[martha@eridanus ~] svn checkout http://svn.apache.org/repos/asf/subversion/trunk subversion

Hast du ein eigenes Repository angelegt (dazu kommen wir gleich), das sich also innerhalb des gleichen Dateisystems befindet, ist das file://-URL-Schema die richtige Wahl. Befindet sich zum Beispiel dein eigenes Repository in ~/svn/myproject, so kannst du wie folgt eine Arbeitskopie davon ins Verzeichnis myproject auschecken:

[martha@eridanus ~] svn checkout file:///home/martha/svn/myproject ~/myproject

Subversion als Server

Wenn du eigene Projekte auf deinem Uberspace mit Subversion verwalten möchtest, kannst du mittels svnadmin ein entsprechendes Repository anlegen. Der Übersichtlichkeit halber (vielleicht wird es ja mal mehr als ein Projekt) legen wir zunächst ein Verzeichnis svn an, in dem wir dann das Repo erstellen. So sieht das aus:

[martha@eridanus ~] mkdir ~/svn
[martha@eridanus ~] svnadmin create ~/svn/myproject

Innerhalb des Uberspaces kannst du nun wie schon bereits im vorigen Abschnitt beschrieben über das file://-URL-Schema auf das Repository zugreifen. Vermutlich interessierst du dich aber auch dafür, wie du es von deinem anderen Rechner aus ansprechen kannst, um Code aus- und einzuchecken. Nichts leichter als das!

Wir unterstützen bei Uberspace.de zwar nicht den Zugriff via WebDAV (weil das keine Multi-User-Unterstützung bietet, wie sie fürs Shared Hosting erforderlich wäre) und auch nicht den direkten Betrieb eines öffentlich erreichbaren svnserve auf einem eigenen Netzwerkport, aber wir bieten dir die Möglichkeit, deinen SSH-Zugang dafür zu verwenden - was den großen Vorteil hat, dass die Übertragung authentifizierung und verschlüsselt ist, und solltest du bereits einen Login mit SSH-Schlüssel verwenden, so funktioniert das automatisch auch hier.

Erfreulicherweise hat Subversion Unterstützung für dieses Zugriffsprinzip bereits eingebaut, und zwar unter dem Protokollschema svn+ssh:// ins Spiel. Technisch gesehen funktioniert das so, dass, statt dass serverseitig ständig eine svnserve-Instanz liefe, svn zunächst eine SSH-Verbindung aufbaut und dann selbstständig eine svnserve-Instanz startet. Und so funktioniert's:

[someuser@somehost ~] svn checkout svn+ssh://martha@eridanus.uberspace.de/home/martha/svn/myproject myproject

Subversion legt dabei ein verstecktes .svn-Verzeichnis in myproject an, in dem es sich unter anderem merkt, woher das Repository ausgecheckt wurde - führst du einen Commit durch, wird die Änderung also direkt wieder an deinen Uberspace übertragen.

Mit mehreren Usern arbeiten

Möglicherweise arbeitest du nicht alleine an einem Projekt, sondern möchtest auch anderen Usern Zugriff darauf geben - ihnen aber natürlich keinen vollen Zugang zu deinem Uberspace geben. Das Subversion-Handbuch hat dazu einen interessanten Vorschlag: Du kannst nämlich in deiner ~/.ssh/authorized_keys mehrere Public Keys hinterlegen, also auch von anderen, und kannst mit Hilfe des Forced-Command-Features des SSH-Servers dafür sorgen, dass die Besitzer jener anderen Keys keinen direkten Login bekommen, sondern unmittelbar svnserve für sie gestartet wird - und kannst mit Hilfe der Option --tunnel-user=... auch vorgeben, als welcher User sie gegenüber Subversion dargestellt werden.

Alle wichtigen Informationen dazu findest du im Subversion-Handbuch im Abschnitt Controlling the invoked command des Kapitels über svnserve.

Möchtest du den unterschiedlichen Usern auch unterschiedliche Rechte auf den verschiedenen Repos geben, so ist das Kapitel Path-based Authorization für dich relevant. Du musst hierbei in der Datei REPO/conf/svnserve.conf die (auskommentierte) Variable authz-db aktivieren; in der REPO/conf/authz findest du bereits ein Template zur Vergabe der userspezifischen Rechte. Bitte lies dir aber durchaus auch den Abschnitt „Do You Really Need Path-Based Access Control?“ unter dem obigen Link durch - insbesondere Versionsverwaltungssysteme ermöglichen durch ihr striktes Logging aller Aktivitäten immerhin auch eine soziale Kontrolle.

Killed by signal 15

Liefert der Zugriff via svn+ssh:// bei die die Fehlermeldung „Killed by signal 15“? Dann stolperst du dabei über einen bekannten Bug in Subversion. Ein Beitrag auf serverfault.com weiß Rat: Du musst die Zeile

ssh = $SVN_SSH ssh -q

deiner lokalen ~/.subversion/config hinzufügen (also der auf dem Client-Rechner); anschließend tritt das Problem nicht mehr auf.

development/subversion.txt · Zuletzt geändert: 2014/04/17 14:47 (Externe Bearbeitung)