Subversion - Versionskontrolle im Weimarnetz

Dieser Artikel oder Abschnitt enthält defekte Links. Die Links und ggf. Alternativen beim Internet Archive findest du in der Kategorieseite ToteLinks angegeben. Hilf bitte mit, die Links zu erneuern und entferne anschließend diese Markierung.

Hormigas-small.png

Dies ist eine Projektseite von Wireless Weimar.

Hier gibt es eine Liste weiterer Projekte...

Einleitung

Versionskontrollsysteme werden eingesetzt, um die Arbeit an Projekten mit mehreren Entwicklern zu vereinfachen. Hauptaugenmerk liegt dabei darauf, mehreren Personen die gleichzeitige Arbeit an einzelnen Dateien oder Teilen davon zu ermöglichen, Änderungenen abzugleichen und bei der gemeinsamen Arbeit auftretende Konflikte aufzulösen.

In diesem Artikel soll das Versionskontrollsystem Subversion (kurz SVN) bekannt gemacht werden. SVN ist ein Nachfolger des bekannten CVS, schickt sich jedoch nach eigenen Angaben an, die gröbsten CVS-Schwachstellen zu beseitigen. Unter anderem versioniert SVN nun auch Verzeichnisse, so daß auch verzeichnisbasierte Operationen wie das Löschen oder umbenennen von Dateien unter die Versionskontrolle fallen.

Arbeit mit Subversion

Bevor wir mit der Arbeit mit Subversion beginnen, sollten wir die wichtigsten Begriffe klären, die zum täglichen Umgang mit Subversion gehören. Sonst steht zu befürchten, daß jeder von etwas anderem redet, alle dasselbe meinen und keiner irgendetwas versteht.

Unter http://de.wikibooks.org/wiki/Versionskontrolle_mit_Subversion ist ein interessantes Wikibuch zum Thema zu finden (Dank an den BakerMan)...wer sich also tiefergehend mit dem ganzen Kram auseinandersetzen möchte, sollte sich das Buch zu Gemüte führen.

Begriffe

Damit wir alle über das gleiche reden und jeder die verwendeten Begriffe im Zusammenhang mit Subversion kennt, sollen die Wichtigsten in den folgenden Abschnitten zumindest grundlegend erläutert werden. Repository und Arbeitskopie sind dabei in Subversion "eingebaute" Begriffe. Trunk, Branches und Tags stehen für die Strukturierung eines Softwareentwicklungsprojektes, um das Arbeiten an verschiedenen Teilprojekten und unterschiedlichen Versionen zu ermöglichen. Diese Strukturierung basiert auf Vorschlägen der Subversion-Entwickler und ist für kleine Projekte wie unsere Firmware bzw. Erweiterung unkompliziert und effizient einsetzbar.

Repository

Als Repository oder zu Deutsch Projektarchiv wird das gesamte mit einer Subversion-Instanz versionierte und verwaltete Projekt bezeichnet. Repositories bestehen lediglich aus Dateien und Verzeichnisstrukturen, dabei obliegt es dem Entwicklerteam, ob und inwieweit das ganze strukturiert ist (z.B. nach Trunk, Tags und Branches, siehe die folgenden Begriffe). Vorgaben zur Erstellung der Verzeichnisstruktur gibt es dabei nicht, da SVN Versionierung und Strukturierung im Gegensatz zu anderen (älteren) Versionskontrollsystemen trennt.

Trunk

Trunk bezeichnet den aktuellen Entwicklungszweig eines Softwareprojekts. Am Beispiel der Firmwareerweiterung für das Weimarnetz entspräche der Trunk der Firmwareerweiterung vom 25. April für die Firmwareversion 1.2.5.

Branches

Als Branches werden Entwicklungszweige bezeichnet, die ausgehend vom Hauptentwicklungszweig (Trunk) parallel weiterentwickelt werden, um beispielsweise an kommende Firmwareversionen angepaßt zu werden, die jedoch noch nicht im produktiven Einsatz ist. Somit ist es möglich, daß mehrere Versionen gleichzeitig gepflegt werden können.

Tags

Tags sind Entwicklungszweige, in die keine Entwicklungsarbeit mehr fließt. Das heißt, hierher werden die Entwicklungszweige verschoben, welche mit hoher Wahrscheinlichkeit nicht mehr verändert werden. Dann können unter anderem Firmwareerweiterungen sein, deren grundlegende Firmware nicht mehr eingesetzt wird.

Vom Trunk zu Branches oder Tags

Wie komme ich vom Hauptentwicklungszweig zum Branch oder Tag? Ganz einfach, die aktuelle Arbeitskopie wird mit einer Subversion-eigenen Funktion kopiert. Um auf einem parallelem Entwicklungszweig weiterzuarbeiten muß dann noch die Arbeitskopie auf den neuen Pfad umgestellt werden (dafür gibts auch eine Subversion-eigene Funktion)

Um später Parallelzweige wieder zusammenzuführen, z. B. parallele Entwicklungen in den Hauptentwicklungszweig einfließen zu lassen, "mischt" man beide Kopien mit einer Subversion-eigenen Funktion. Konflikte und Überschneidungen können mit Hilfe von Differenzprogrammen aufgelöst werden.

Arbeitskopie

Als Arbeitskopie wird der aktuelle Entwicklungszweig bezeichnet, auf dem man gerade entwickelt bzw. ändert. Das können Trunk, Branches oder sogar Tags sein.

Operationen/Aktionen

Checkout

Ein Checkout bezeichnet die erstmalige Übertragung einer Arbeitskopie in ein lokales Entwicklungsverzeichnis. Es ist möglich, die aktuelle, aber auch eine ganz bestimmte Version der Arbeitskopie auszuchecken. Beim Checkout werden im Zielverzeichnis vorhandene Dateien ohne Rücksicht auf Verluste überschrieben, doch einerseits sollte ein Checkout in ein leeres Verzeichnis erfolgen und andererseits sollten Änderungen mit Update und Commit gepflegt werden.

Checkouts sind weiterhin sinnvoll, wenn ein komplett neuer Entwicklungszweig erstellt wird oder man einen bestimmten Entwicklungsstand aufnehmen will (z.B. wenn man sich die eigene Arbeitskopie verkonfiguriert hat).

Commit

Update

Diff

Verzweigen

Merge

Vorgehensweisen

Einrichtung

Notwendige Software

Zum Zugriff auf das Software-Repository ist es notwendig, eine Clientsoftware zu installieren. Grundsätzlich gibt es dafür zwei Möglichkeiten:

  • Arbeit mit der Kommandozeile
  • Integration in den Dateibrowser des jeweiligen Betriebssystems

Die nachfolgende Auswahl von SVN-Clients beschränkt sich auf integrierte Clients.

Mac OS

Der Client für Mac OS heißt scplugin

Informationen unter: http://scplugin.tigris.org

Download unter: http://scplugin.tigris.org/svn/scplugin/trunk

Linux

  • gnome
    • Eclipse, über die normalen Paketmanager apt-get oder aptitude nachinstallierbar
    • noch ein kleines tool:Subclipse

Windows

TortoiseSVN ist der Name des Windows-Clients, es erfolgt eine Integration in das Kontextmenü des Exploders, das dazugehörige und wirklich übersichtlich aufgebaute Handbuch ist hier zu finden: http://tortoisesvn.net/docs/nightly/TortoiseSVN_de/index.html

Informationen unter: http://tortoisesvn.tigris.org/

Download unter: http://sourceforge.net/project/showfiles.php?group_id=138498&package_id=151948

Download der deutschen Sprachdateien unter: http://sourceforge.net/project/showfiles.php?group_id=138498&package_id=158749

Zugriffsdaten

Die Projektseite der Weimarnetz-Firmwareerweiterung ist unter http://sourceforge.net/projects/weimarnetz-fw erreichbar.

Um am Projekt teilnehmen und Subversion nutzen zu können, benötigt jeder Entwickler einen Account bei http://www.sourceforge.net. (Hier gehts direkt zur Anmeldung). Danach eine kurze eMail mit eurem Benutzernamen bei sourceforge an Andreas Bräu und ihr werdet zu Mitgliedern des Projektes.

Der Zugriff auf das Repository unserer Firmwareerweiterung in SVN-Clients erfolgt über die Adresse https://svn.sourceforge.net/svnroot/weimarnetz-fw. Damit greift man auf das Wurzelverzeichnis des Projektarchivs zu. Um z. B. nur den aktuellen Enwicklungszweig der aktuellen Firmwareerweiterung zu sehen, kann die Adresse um die jeweiligen Verzeichnisse ergänzt werden. Die Adresse dafür sieht beispielsweise so aus: https://svn.sourceforge.net/svnroot/weimarnetz-fw/trunk/erweiterung. Die meisten SVN-Clients erlauben jedoch auch das durchstöbern des Projektarchivs und somit die visuelle Auswahl des gewünschten Verzeichnisses:

 

Das gesamte Repository der Weimarnetz-Firmwareerweiterung läßt sich auch online mit einem Webbrowser ansehen und ist unter http://svn.sourceforge.net/viewcvs.cgi/weimarnetz-fw/ für jedermann zu erreichen. In diesem Online-Repository kann man lediglich lesend auf die Projektdateien zugreifen und diese nur einzeln betrachten.

Einrichtung des SVN-Clients

Arbeit mit Subversion

Initialschritt

Hinzufügen/Löschen von Elementen

Was tun bei Konflikten?

Downgrade auf bestimmte Versionen

Release Management bei Sourceforge

Neben SVN stellt Sourceforge außerdem Werkzeuge bereit, um Pakete und Releases der entwickelten Software zu veröffentlichen. Vorteile sind dabei u.a. daß die Version nicht mehr in den Dateinamen eingearbeitet muß, daß mehrere Personen die Berechtigung zur Veröffentlichung haben können und daß man die verschiedenen Releases verfolgen kann.

 
Ausschnitt der SF-Startseite für unser dortiges Weimarnetzprojekt

Bisher wurden im Weimarnetz-Projekt zwei Pakete angelegt:

  • "Weimarnetz-Erweiterung" ==> bisher notwendig, da nicht die gesamte Firmware dafür verteilt wurde.
  • "Weimarnetz-Firmware" ==> für Veröffentlichung mitsamt der Firmware

Folgende Schritte sind zur Veröffentlichung einer neuer Version durchzuführen:

  1. Die Projektstartseite öffnen
  2. Im Admin-Bereich den Unterpunkt File Releases auswählen
    1. Auf dieser Seite nach gaaaanz unten Scrollen und zum gewünschten Paket mittels Klick auf Add Release eine neue Veröffentlichung hinzufügen
    2. Name bzw. Versionsnummer eingeben und Release erstellen
       
      Neue Veröffentlichung erstellen
  3. Die folgende Seite nun Schritt für Schritt abarbeiten. Hinweis: Jeder Schritt (Step) muß einzeln mit Submit bestätigt werden, d.h. alle Änderungen bei anderen Schritten gehen verloren (leidvolle Erfahrung :-))
    1. Allg. Informationen und Änderungen vermerken
    2. Die Dateien (Schritt 2):
      1. Die zu verteilende Datei muß auf ftp://upload.sourceforge.net/incoming geladen werden
      2. Falls Datei noch nicht in der Liste, Dateiliste aktualisieren (mit Button Add Files/Refresh View von Schritt 2)
      3. richtige Datei auswählen und Add Files/Refresh View
    3. Für weitere Dateien die letzten drei Schritte wiederholen.
  4. Fertig!