Übung 2:

  1. Erstellen Sie ein Repository, bei dem Zweige für Branches und Tags existieren, wie die Subversiondokumentation es empfiehlt. (Wenn Sie möchten, können Sie dieses Shellskript verwenden.) Schauen Sie sich anschließend mit "svn ls" den Inhalt des Repositorys an, und überlegen Sie, wieso ein solches Layout empfohlen wird.
  2. Checken Sie ein Unterverzeichnis mit einem Hello-World-Programm ein. Welchen URL hat die Programmdatei anschließend? Lassen Sie sich die Datei mit "svn ls" anzeigen.
  3. Erstellen Sie mit "svn copy" ein Tag auf einen beliebigen Stand des Hello-World-Programms und lassen Sie es sich mit "svn ls" anzeigen. Checken Sie anschließend die getagte Version aus. Vergleichen Sie den Tag-Stand mit anderen Ständen (z.B. dem Trunk). Verwenden Sie dazu "svn diff" mit Angabe des Trunk- und des Tag-Zweiges im Repository. Ändern Sie etwas im Trunk, checken Sie ein und setzen Sie den svn-diff-Aufruf erneut ab, um Unterschiede zwischen den Versionen angezeigt zu bekommen.
  4. Erstellen Sie einen Branch des Unterverzeichnisses aus der vorletzten Aufgabe. Führen Sie ein, zwei Änderungen mit Checkins im Trunk durch. Wechseln Sie anschließend mit "svn switch" in den Branch. Führen Sie hier ein, zwei andere Änderungen durch und checken Sie sie ein. Führen Sie nun mit "svn merge" den Branch und den Trunk zusammen und checken Sie im Trunk ein. Vergleichen Sie dann den neuen Stand mit alten Trunk- und Branchständen.
    Hinweis: Beachten Sie die je nach Subversionversion unterschiedliche Vorgehensweise, z.B. bezüglich nötiger Checkin-Kommentare.
  5. Stellen Sie sich vor, Sie haben statt des Trunks versehentlich einen Tag-Stand bearbeitet und eingecheckt. Da Tags nicht verädert werden sollten, möchten Sie Ihre Änderung zurücknehmen. Um so eine Situation zu simulieren, führen Sie eine beliebige Änderung an einer Datei durch und checken Sie sie ein. Stellen Sie anschließend den Originalzustand wieder her, d.h. lassen Sie die Versionsverwaltung die entsprechenden Änderungen zurücknehmen, und checken Sie dann erneut ein. Die Vorgehensweise dafür steht in der Dokumentation im Abschnitt "Undoing Changes".
  6. Checken Sie ein Hello-World-Programm in einer kompilierten Sprache ein (z.B. C/C++ oder Java), übersetzen Sie es, und lassen Sie die erzeugten Dateien bei der Statusanzeige ignorieren. Setzen Sie dafür mit "svn propset" die Eigenschaft "svn:ignore" des entsprechenden Verzeichnisses auf den entsprechenden Wert.
  7. Fügen Sie eine weitere Datei zum Verzeichnis der vorigen Aufgabe hinzu und lassen Sie sie ebenfalls ignorieren. Prüfen Sie mit "svn status", ob wirklich beide Dateien ignoriert werden.
    Hinweis: Da der neue Wert der Property jetzt nur umständlich eingegeben werden kann (weil er mehr als eine Zeile enthält), ist eine andere Methode als "svn propset" nun einfacher.
  8. Legen Sie mit "svn mkdir" ein versioniertes Unterverzeichnis an, und verschieben Sie mit "svn move" eine Datei dorthin.
  9. Erstellen Sie ein Shellskript (z.B. wieder Hello-World oder das Skript aus Übung 3), machen Sie es ausführbar und rufen Sie es testweise auf. Erstellen Sie (mit "ln -s") einen symbolischen Link auf eine beliebige Datei. Besorgen Sie sich außerdem eine beliebige Binärdatei, z.B. ein Bild oder einen Auszug aus /dev/zero oder /dev/urandom. Stellen Sie die neuen Dateien unter Versionskontrolle. Was bemerken Sie dabei? Schauen Sie sich mit "svn proplist" und "svn propget" an, welche Eigenschaften mit welchen Werten die Dateien haben. Wie finden Sie heraus, auf welche Datei der Link verweist (ohne ihn auszuchecken und z.B. "ls" zu benutzen)?
  10. Lesen Sie nach, welche Subversion-Propertys es gibt, und überlegen Sie, unter welchen Umständen Sie sie sinnvoll einsetzen könnten.
  11. Löschen Sie eine Datei mit "svn delete". Wann wird die Datei im Repository gelöscht? Was bedeutet in diesem Zusammenhang "löschen"?
  12. Schauen Sie sich in einer Arbeitskopie den Inhalt eines .svn-Verzeichnisses an. Was für Dateien sind dort enthalten, und wofür könnten sie dienen? Können Sie diese Dateien möglicherweise auch für etwas anderes nutzen?
  13. Vollziehen Sie nach, wie CVS aus der neuesten Version einer Datei die älteren erzeugt. Schauen Sie sich dazu die kommentierte Version der Datei hw.c,v an.