Ein Übungs-Projekt starten

Auf dem Rechner ist nun ein Arbeitsverzeichnis vorhanden, das von Subversion überwacht wird: Zeit ein Projekt zu starten.

(FIXME:Bild) Wir schreiben ein ‘HelloSubversion’ in C und speichern es unter dem Namen “main.c” in das trunk-Verzeichnis der Arbeitskopie.

Unter MacOS und Linux haben ist vermutlich der GNU-C-Compiler bereits installiert, so lässt sich die Datei auch einfach kompilieren. Unter Microsoft Windows müssen Sie erst einen Compiler installieren, zum Beispiel den GCC1) Dann können Sie die Datei ebenfalls wie folgt kompilieren:

gcc -o foobar main.c

Es entsteht eine ausführbare Datei mit dem Namen „foobar“. Als Windows-Benutzer sollten Sie „-o foobar.exe“ angeben, so dass auch eine „foobar.exe“ entsteht. Diese können Sie unter der Konsole ausführen: (FIXME:Bild)

Neue Dateien lokal hinzufügen (add)

Die neue Datei wird im Repository angemeldet mit folgenden Befehl:

svn add main.c

Das ist erforderlich, weil nicht jede Datei auch wirklich unter Versionsverwaltung gestellt werden soll. Außerhalb der Versionskontrolle bleiben Dateien, die aus dem Sourcecode erzeugt werden. Dazu gehören ausführbare Dateien, wie auch temporäre Dateien, die zum Beispiel während des Kompilierens erstellt werden. Haben Sie die Datei vorhin kompiliert, so befindet sich im trunk-Verzeichnis auch eine ausführbare Datei „foobar” (bzw. „foobar.exe“), die im Repository keinen Sinn ergibt.

(FIXME:Bild)Nach dem „svn add“ Befehl gibt Subversion aus, welche Dateien im Repository durch den Befehl verändert wurden.

Das “A” in der ersten Spalte bedeutet “Added”: Die Datei wurde dem lokalen Repository hinzugefügt. Man kann beliebig viele Dateien dem Repository hinzufügen, so ist es auch möglich ein bereits bearbeitetes Projekt in das trunk-Verzeichnis zu kopieren und anschließend dem Repository hinzuzufügen. Werden Verzeichnisse hinzugefügt, so werden auch alle darin enthaltendenen Verzeichnisse und Dateien rekursiv hinzugefügt. Auch hier gilt: Ruft man svn mit der Option –non-recursive (oder dem Synonym: -N), so werden Verzeichnisse ohne deren Inhalt hinzugefügt.

Man kann mehrere Dateien mit einem Befehl einfügen und auch den Joker (‚*‘) verwenden, z.B:

svn add README *.h *.cpp *.c

Eine neue Version erzeugen (commit, ci)

Nachdem wir nun eine Datei im Repository haben, wird es Zeit die aktualisierten Quelltexte ins Repository zu übernehmen:

svn commit -m "Hauptprogramm geschrieben"

Nun werden alle Änderungen an Dateien, die über Subversion überwacht werden, an den Subversion-Server übertragen. Es ist nun nicht mehr erforderlich anzugeben, wo der Subversion-Server steht, diese Information wurde bereits beim checkout im Arbeitsverzeichnis gespeichert.

(FIXME:Bild) Nachdem die Datei auf den Server übertragen wurde, ist sie für alle Entwickler abrufbar. Das werden wir nun mit einem zweiten Entwickler einmal ausprobieren.

Einen zweiten Entwickler simulieren

Um einen zweiten Entwickler zu simulieren, legen wir neben unserem Arbeitsverzeichnis „arne“ ein zweites Verzeichnis „bert“ an, wechseln in das neue Verzeichnis und laden uns wie zuvor eine Kopie des Entwicklungs-zweiges vom Subversion-Server. (FIXME:Bild)

In Arbeitsverzeichnis des 2. Entwicklers wird also die Datei „main.c“ im Verzeichnis „trunk“ hinzugefügt, er hat Revision 2 als lokale Arbeitskopie. Beide Entwickler können nun an ihren Arbeitskopien nach Belieben weiterarbeiten. Genauso kann ein Entwickler aber auch eine zusätzliche Arbeitskopie auf den Rechner laden um ein kurzfristiges zu lösendes Problem vorzuziehen, ohne sich selbst mit seiner bereits veränderten ersten Arbeitskopie in die Quere zu kommen.

1) Eine Beschreibung die MinGW Version des GCC-Compiler unter Windows zu installieren finden Sie unter Compiler einrichten.