Humboldt-Universität / Computer- und Medienservice / Benutzer-Howto und FAQ für den Subversion-Server svn.cms.hu-berlin.de

Benutzer-Howto und FAQ für den Subversion-Server svn.cms.hu-berlin.de

(SVN: Subversion;   FAQ: Frequently Asked Questions)

(Über unseren URLMinder können Sie veranlassen, per E-Mail benachrichtigt zu werden, wenn diese Seite geändert wird.)

Inhalt:

1 Allgemeines

1.1 Was ist SVN?

SVN steht für Subversion. Es wird hauptsächlich bei der Software-Entwicklung zur Source-Code-Verwaltung eingesetzt und wird in der Open-Source-Szene als DER Nachfolger von CVS gehandelt.

1.2 Wo und wie kann ich einen Zugang zum Subversion-Server beantragen?

Anträge nimmt die Webtech-Gruppe (webtech@cms.hu-berlin.de) entgegen.

ALERT! Der Subversion-Server steht ausschließlich CMS-Mitarbeitern zur Verfügung. Andere Einrichtungen (Fakultäten, Institute, Lehrstühle ...) können leider nicht den CMS-Subversion-Server verwenden und auch nicht beim Aufbau eines eigenen Subversion-Servers unterstützt werden, da dafür die Personalkapazitäten fehlen.

Folgende Angaben sind notwendig:

  • Name des Repositories (bzw. Name des Projekts)
  • Liste der Software-Entwickler: Vorname, Nachname und Benutzer-Konto (Mail-Account - nicht die E-Mail-Adresse) am CMS
  • optional können auch die öffentlichen SSH2-Keys der Entwickler (Format egal - IETF oder OpenSSH - Hauptsache SSH2) mit übermittelt werden, um den Subversion-Zugang zu vereinfachen

Wichtige Hinweise:

  • Ein Zugang ist nur möglich, wenn die Software-Entwickler einen gültigen und aktiven Account (mit Basisservice) am CMS besitzen (dieser Account wird für den Subversion-SSH-Zugang verwendet)
  • Mit der Erteilung des Auftrags, ein neues Repostitory einzurichten, erfolgt auch eine Zustimmung zu den Verhaltensrichtlinien im Umgang mit dem Subversion-Server

1.3 Welche Verhaltensrichtlinien gibt es im Umgang mit dem Subversion-Server?

  • es sollte nicht unnötig Speicherplatz verschwendet werden
    • möglichst nur Quell-Code und zugehörige Daten einchecken (commiten), d.h. es soll kein Binär-Code, der aus dem eingecheckten Quell-Code erzeugt werden kann, eingecheckt (commitet) werden
    • keine Distributionen (.tar-Archive/.zip-Dateien), die aus dem Repository erzeugt werden können, einchecken

1.4 Welche Betriebssysteme und Entwicklungsumgebungen unterstützen Subversion oder werden von Subversion unterstützt?

Folgende Betriebssysteme:
  • Allgemein: (fast) alle, u.a:
    • (fast) alle UNIX/Linux-Systeme
    • Windows
    • MacOS (X)

Entwicklungsumgebungen:

  • Allgemein: (fast) alle, u.a:
    • JBuilder
    • Eclipse
    • Netbeans
    • ...

1.5 Wer hat alles Zugang zu den Repositories und zum Subversion-Server?

Der Zugriff auf dem Subversion-Server ist sehr restriktiv, d.h. dass nur explizit eingetragene Benutzer Zugriff auf die Subversion-Repositories erhalten und auch nur auf die, für die sie berechtigt sind. Es gibt also keinen anonymen Zugang und auch keine Möglichkeit, ohne explizite Berechtigung auf andere Repositories zuzugreifen.

1.6 Wie (ausfall-)sicher ist der Subversion-Server?

Zugriffssicherheit:
  • Der Zugang ist sehr restriktiv und nur über eine Secure-Shell möglich.
  • Ein direktes Einloggen ist für Benutzer jedoch nicht möglich - es darf nur mittels Subversion über SSH zugegriffen werden.
  • Es ist kein anonymer Zugriff auf die Repositories möglich und die Filesystem-Rechte verbieten es anderen Entwicklern, auf Repositories zuzugreifen, für die sie nicht eingetragen sind.

Datensicherung:

  • Von dem Server werden einmal täglich Datensicherungen in das TSM (zentrales Backup auf Bandrobotern) durchgeführt.
  • Außerdem wird alle 10 Minuten eine Sicherung (Synchronisation) auf den Ausfall-Server durchgeführt.

Ausfallsicherheit:

  • Alle 10 Minuten wird eine Sicherung (Synchronisation) der Daten und Konfigurationen auf den Ausfall-Server durchgeführt.

  • Es erfolgt derzeit noch keine automatische Umschaltung auf den Ausfall-Server, d.h. es kann unter Umständen einige Zeit dauern, bis der Ausfall-Server den svn.cms.hu-berlin.de ersetzt (inkl. Übernahme des Namens svn.cms.hu-berlin.de).

  • Zum Server selbst:
    • Die Festplatten fürs Betriebssystem und die Platten für die Subversion-Repositories werden im RAID1 (redundant) betrieben.
    • Der Server besitzt 3 redundante Netzteile, die an drei verschiedenen Sicherungen angeschlossen sind.
    • Der Ausfallserver ist hardwaremäßig identisch mit dem Subversion-Server.

1.7 Wieviel Speicherplatz steht für ein Subversion-Repository zur Verfügung?

Auf dem Subversion-Server stehen derzeit 120GB zur Verfügung. Derzeit ist der Speicherplatz für ein Subversion-Repository nicht beschränkt (quotiert). Wenn möglich, sollte der Speicherplatz nicht unnötig verschwendet werden (möglichst nicht mehr als 1-2GB pro Repository verwenden). Außerdem teilen sich die Subversion-Repositories den Platz mit den CVS-Repositories.

1.8 Wie unterstützt mich Subversion bei der Software-Entwicklung oder warum sollte ich gerade Subversion bei der Software-Entwicklung verwenden?

Gerade wenn mehrere Entwickler an der gleichen Software arbeiten, kommt man um ein Versionskontrollsystem wie Subversion nicht herum. Es ist extra dafür entwickelt worden, die Zusammenarbeit in Entwickler-Gruppen an gemeinsamen Software-Projekten zu unterstützen und zu vereinfachen.

Subversion wird mittlerweile in recht vielen Open-Source-Projekten verwendet.

Welche Fähigkeiten und Möglichkeiten bietet mir Subversion konkret:

  • jede Datei und jedes Verzeichnis im Repository wird versioniert:
    • jede Änderung am Repository kann rückgängig gemacht werden
    • Vergleiche zwischen den Versionen sind möglich (diff)
    • Änderungsverfolgung: Wer hat wann, was und vielleicht auch warum verändert?

  • parallele Änderungen an der selben Datei sind möglich (bei Änderungs-Kollisionen muss der letzte Entwickler, der commitet, den Code mergen/zusammenführen bevor er selber commiten kann - Kollisionen passieren aber eher selten, im Normalfall wird der Code automatisch zusammengeführt)

  • E-Mail-Benachrichtigung über Änderungen im Repository

  • Subversion unterstüzt Branches: bei grundlegenden Änderungen kann ein neuer Entwicklungs-Zweig (Branch) angelegt werden, während der Hauptzweig unabhängig vom neuen Zweig weiterentwickelt werden kann

  • Es können (Release-)Tags gesetzt werden, um einen aktuellen Stand der Software (/ eine Version) jederzeit exportieren bzw. auschecken zu können.

  • ...

1.9 Warum soll ich gerade diesen und nicht einen eigenen Subversion-Server verwenden?

Der Subversion-Server des CMS:

  • bietet hohe Ausfallsicherheit (redundante Hardware)
  • eine Datensicherung in das zentrale Backup-System des CMS (Bandroboter an verschiedenen Standorten)
  • einen Ausfallserver (extra Server - wer kann sich schon sowas leisten außer dem CMS?)
  • wird von CMS-Mitarbeitern (Webtech-Gruppe) administriert (das CMS nimmt Ihnen den Administrations-Aufwand ab)
  • ...

1.10 Welche Alternativen existieren neben Subversion?

Es gibt eine ganze Reihe von Versionskontrollsystemen. Die meisten (kommerziellen) Systeme bezeichnen sich als SCM-Systeme (Software Configuration Management) oder als VCS-Systeme (Versioning Control System).

Kostenlose Versionskontrollsysteme:

Kommerzielle Versionskontrollsysteme (nur die bekanntesten):

Einen Vergleich zwischen diesen und anderen VCS/SCM-Systemen findet man beispielsweise unter: http://better-scm.berlios.de/comparison/comparison.html

2 Benutzung

2.1 Was muß ich unbedingt tun und wissen, bevor ich mit dem Subversion-Server arbeite?

2.1.1 Subversion installieren, falls noch nicht vorhanden.

Linux/UNIX:
Die meisten Linux-Distributionen bringen Installationspakete für Subversion (SVN) mit. Die Installation selbst ist natürlich abhängig von der Distribution (SuSe: yast2, Debian: apt-get install subversion, ...) und kann natürlich auch selbst vorgenommen werden (bei UNIX-Sytemen meist nicht anders möglich): http://subversion.tigris.org/

Windows:
Eine Binary-Distribution kann man sich unter folgender URL herunterladen

http://subversion.tigris.org/project_packages.html

2.1.2 Einen SSH-Client installieren, falls noch keiner vorhanden ist.

Linux/UNIX:
Auf den meisten Linux/UNIX-System ist meist schon ein SSH-Client (z.B. OpenSSH: http://www.openssh.org/) installiert.

Windows:
Bei Windows muss natürlich meist erst ein SSH-Client installiert werden. Da wären:

  • ...

2.1.3 Eine SSH-Verbindung zu svn.cms.hu-berlin.de aufbauen.

ALERT! meist nur einmalig pro verwendeten Client notwendig

  • auf der Kommando-Zeile (Shell oder / MS-DOS-Fenster) folgendes eintippen ([account name] durch den eigenen CMS-Account ersetzen):
        ssh svn.cms.hu-berlin.de -l [account name]
       
        bzw.
    
        ssh2 svn.cms.hu-berlin.de -l [account name]
    

  • Wenn nach dem Speichern des Host-Keys gefragt wird, unbedingt mit Ja/yes antworten.

  • Wenn ein Passwort abgefragt wird, bitte das entsprechende Passwort eintippen:
    • entweder zum Account ([account name]) (wenn kein öffentlicher SSH-Key auf dem Subversion-Server hinterlegt wurde)
    • oder zum Entsperren des lokalen privaten SSH-Keys (wird nur bei auf dem Subversion-Server hinterlegtem SSH-Key abgefragt)

  • Wenn das Einloggen geklappt hat, sollte ein Meldung ähnlich der folgenden ausgegeben werden:
    #################################################
    # Der SSH-Zugang zum CVS- und SVN-Server ist be-#
    # schraenkt.                                    #
    # Es ist nur erlaubt, mit cvs oder svn auf den  #
    # SSH-Zugang dieses Servers zuzugreifen.        #
    # Ihr Account ist aber gueltig und berechtigt.  #
    #################################################
    # Bei Fragen und Problemen bitte eine E-Mail an #
    #     Webtech <webtech@cms.hu-berlin.de>        #
    #################################################
    

2.1.4 Warum ist es wichtig, (einmalig) eine SSH-Verbindung zum Server aufzubauen?

Ganz einfach, damit die lokal verwendete SSH sich den Host-Key abspeichern kann, denn die meisten SSH-Programme fragen den Benutzer, ob der Host-Key gespeichert werden soll (UNBEDINGT MIT "JA/yes" antworten).

Wenn das nämlich noch nicht passiert ist, würde eine Entwicklungsumgebung, die normalerweise nicht mit so einer Frage rechnet, beim Zugriff auf den Subversion-Server sicher hängen bleiben.

Außerdem kann man so überprüfen, ob der Account korrekt eingetragen ist.

2.1.5 Warum kann es wichtig sein, einen SSH-Agent laufen zu lassen, wenn man eine Entwicklungsumgebung verwendet?

Dies ist nur interessant, wenn ein SSH-Key auf dem Server hinterlegt wurde.

Die meisten Entwicklungsumgebungen können kein Passwort für die SSH (SSH-Key-Passwort) abfragen, weil oft mit etwas derartigem nicht gerechnet wird. Einige bieten zwar eine Konsole an, in der man dann so etwas eintippen kann, aber eben nur einige.

Ein SSH-Agent fragt einmalig das Passwort für den privaten SSH-Key ab und jede SSH, die danach gestartet wird, verwendet dann den SSH-Agent, um die "Public Key"-Authentifizierung durchzuführen. D.h. man spart sich damit auch die ständige Passwort-Tipperei bei denjenigen Subversion-Kommandos, die sich mit dem Server verbinden (checkout, commit, update, import, export ...).

2.2 Welche Zugangsarten bzw. Methoden unterstützt der Subversion-Server?

Derzeit wird nur die svn+ssh-Variante unterstützt (z.B: svn checkout svn+ssh://svn.cms.hu-berlin.de/svn/projects/test)

2.3 Wie lautet die URL zum Auschecken bzw. Importieren von Repositories?

Die URL setzt sich wie folgt zusammen:

              svn+ssh://svn.cms.hu-berlin.de/svn/projects/<Repository-Name>
wobei der entsprechende Repository- bzw. Projekt-Name für <Repository-Name> eingesetzt werden muss.

2.4 Wie konfiguriere ich den ssh2-Client von SSH Communications Security unter Windows, damit er auch mit Passwort-Authentifizierung funktioniert?

Voraussetzung:
  • Die SSH von SSH Communications Security ist unter C:\Programme\SSH Communications Security\SSH Secury Shell\ installiert
  • Die SSH wurde schon mal gestartet und konfiguriert, sprich das Verzeichnis %USERPROFILE%\Application Data\SSH\ existiert (falls nicht, einfach mit mkdir %USERPROFILE%\Application Data\SSH erzeugen)

Schritt-für-Schritt-Anleitung:

  1. CMD-Shell starten (>Start>Ausführen...>Öffnen: cmd)
  2. Kopiere ssh2_config (folgendes in der CMD-Shell eingeben):
      copy "C:\Programme\SSH Communications Security\SSH Secure Shell\ssh2_config" "%USERPROFILE%\Application Data\SSH\" 
    
  3. Editiere ssh2_config-Kopie (folgendes in der CMD-Shell eingeben):
      notepad "%USERPROFILE%\Application Data\SSH\ssh2_config"
    
  4. und aktiviere folgende Konfiguration in der ssh2_config-Kopie (Kommentar-Zeichen # vor dieser Option löschen):
    Vorher:
      # AllowedAuthentications publickey,keyboard-interactive,password
    
    Nachher:
      AllowedAuthentications publickey,keyboard-interactive,password
    
  5. und das Abspeichern der ssh2_config-Kopie nicht vergessen.
  6. That's all folks smile

3 Nützliche Links


© CMS | Kontakt: Webtech webtech@cms.hu-berlin.de | geändert am 17.08.2006 um 15:30 Uhr
http://twiki.cms.hu-berlin.de/svn/svnbenutzerhowto.html

HU Logo

Computer und
Medienservice


SvnBenutzerHowTo

Impressum