Subversion (SVN) ist das aktuelle und verträglichste Source-Repository für die Java-Entwicklung und weitere Zwecke. Es ist HTTP-Kompatibel, da das Interface die WebDAV-Erweiterung davon ist. Dies bedeutet, alle Subversion-Inhalte können jederzeit über HTTP abgefragt werden, also auch mit dem Web-Browser.

Revision Control System (SCM)#

Revision Control Systeme sind Datenbanken, in denen Quellcode, Dokumente und Binärdateien abgelegt und versioniert werden können. Typischerweise finden diese Systeme bei der Programmierung Verwendung, da dort eine Historie der Veränderungen festgehalten werden soll. Typische Vertreter dieser Software sind CVS, Subversion (SVN), Visual Source Safe oder Clear Case.

SVN#

Windows Service anlegen
sc create svn binpath= "c:/Programme/Subversion/bin/svnserve.exe --service --root c:/java/svn" displayname= "Subversion" depend= Tcpip

Der Apache Subversion Commandline Client: Revision Control System/subversion-1.7.1.zip

VisualSVN#

Inzwischen gibt es von VisualSVN eine ausgereifte Version mit Oberfläche, in der Benutzer und Repositorys angelegt werden können.

Backup, Restore, Copy, Move#

Mit dem tool svnadmin kann ein Backup vom SVN-Repository inklusive Revsion-History erstellt und zurückgespielt werden, also auch kopiert oder verschoben. Dabei muss das svnadmin.exe der aktuellen Installation verwendet werden, also eventuell beim Export und Import zwei verschiedene.
svnadmin dump <path> ><filename>.dump

svnadmin load <path> <<filename>.dump --bypass-prop-validation

Der letzte Parameter --bypass-prop-validation ist nur nötig, wenn es Probleme mit den Zeilenendungen gibt.

Mime-Types (SVN-Properties, Autoprops)#

Das SVN-Repository liefert bei einer HTTP/HTTPS-Abfrage den Mime-Type mit. Die Default-Konfiguration enthält nur text/plain was zum beispiel bei text/html störend ist, da der Browser dies nicht rendered.

Die Konfiguration erfolgt durch ein config(info)

Eclipse -> Window -> Preferences -> Team -> SVN -> Properties Configuration -> Import

SVN-Server: C:\Documents and Settings\All Users\Subversion\config

Root-Verzeichnis Visual-SVN ändern#

Die Datei C:\Program Files (x86)\VisualSVN Server\htdocs\index.html enthält die Weiterleitung.

Vorsicht: Die Datei ist durch Windows geschützt, einfaches Ändern hat keinen Effekt. Die Datei muss herauskopiert und zurück kopiert werden.

Anonymous Public Read Access#

In der Admin-Oberfläche gibt es nur einen Benutzer Everyone, mit dem jedem registrierten Benutzer Zugriffsrechte eingeräumt werden können. Wird jedoch öffentlicher, anonymer Lesezugriff gebraucht, kann das in der Apache httpd-custom.conf eingetragen werden:
<Location />
	Satisfy Any
</Location>

Freie Source-Repositorys#

Proxy#

Beim Verwenden eines Proxys sind die Einstellungen in der Benutzerkonfiguration einzutragen ('servers' ist die Datei, ohne File-Extension):
  • Windows 7: %USERPROFILE%\AppData\Roaming\Subversion\servers
  • Windows XP: %USERPROFILE%\Application Data\Subversion\servers
[global]
http-proxy-exceptions = 127.0.0.1, localhost
http-proxy-host = <proxy-host>
http-proxy-port = <proxy-port>
http-proxy-username = <username>
http-proxy-password = <password>

Username und Passwort sind optional, falls das Proxy Authentication verlangt.

NTLM#

In einer anderen Konfiguration war keine Verbindung über Proxy/NTLM über SVNKit 1.7.4 möglich, jedoch klappte es über Native JavaHL 1.7.4.

Eclipse Connector#

Wenn bereits ein Connector installiert wurde, gibt es offenbar keine Möglichkeit mehr das Marketplace-Popup zu öffnen. Neue Connectoren können dann über Install New Software installiert werden.

Durch das Installieren des ersten Connectors sollte der Update-Link für polarion.com bereits in der History eingetragen sein (etwa http://community.polarion.com/projects/subversive/download/eclipse/3.0/juno-site/), Andernfalls manuell nachtragen.

Bad Gateway#

Das Problem tritt wohl speziell auf, wenn der SVN-Server mit Apache per ReverseProxy von HTTPS auf HTTP intern geroutet wird. Die Lösung besteht im Bereinigen der Header-Einträge bei den Requests. Dazu folgenden Eintrag in den VirtualHost machen:
    RequestHeader edit Destination ^https http early

Clone Repository#

Komplette Kopie inklusive der History:
svnadmin dump D:\svn\old-repository > repository.dump
svnadmin load D:\svn\new-repository < repositorydump