Übung 1:

  1. Erstellen Sie ein Subversion-Repository in einem geeigneten Verzeichnis (z.B. "~/osprgw/.svn-repository"). Verwenden Sie dazu das Programm "svnadmin" mit dem Unterkommando "create". Hilfe bekommen Sie mit "svnadmin help", "man svnadmin" und unter http://svnbook.red-bean.com/.
  2. Erstellen Sie innerhalb des Repositorys ein Unterverzeichnis hw/ und checken Sie es als (noch leere) Arbeitskopie aus. Hilfe bekommen Sie mit "svn help", "man svn" und unter http://svnbook.red-bean.com/.
    Hinweis: Wenn Sie beim Auschecken kein Zielverzeichnis angeben, verwendet Subversion den letzten Teil des URL als Verzeichnisnamen. Falls dort das Verzeichnis steht, in dem das Repository liegt, landet die Arbeitsversion im Repository-Verzeichnis, was nicht erwünscht ist. Deswegen soll ein Unterverzeichnis im Repository erstellt und ausgecheckt werden, denn dann passiert dieser Fehler nicht so leicht.
  3. Schreiben Sie ein Miniprogramm (Hello-World reicht aus) und speichern Sie es innerhalb der Arbeitskopie. Fügen Sie es mit svn add und svn commit zum Repository hinzu. Erklären Sie, wieso hierfür zwei Kommandos nötig sind.
  4. Alternativ zu den beiden vorherigen Punkten: Schreiben Sie ein Miniprogramm (Hello-World reicht aus), legen Sie es in einem Unterverzeichnis ab (z.B. hw/) und checken Sie das Verzeichnis ins Repository ein (nicht nur die enthaltene Datei). Verwenden Sie dazu das Programm "svn" mit dem Unterkommando "import". Checken Sie anschließend das Verzeichnis aus, um eine Arbeitskopie zu erhalten.
    Legen Sie dann eine weitere Datei an (z.B. ein Makefile, eine Headerdatei oder ein Readme) und fügen Sie sie zum Repository hinzu. Hierzu sind zwei Kommandos nötig: add und commit. Erklären Sie wieso.
    Hinweis: Wenn Sie beim Auschecken kein Zielverzeichnis angeben, verwendet Subversion den letzten Teil des URL als Verzeichnisnamen. Falls dort das Verzeichnis steht, in dem das Repository liegt, landet die Arbeitsversion im Repository-Verzeichnis, was nicht erwünscht ist. Deswegen soll beim Importieren das Verzeichnis auch miteingecheckt werden, denn dann passiert dieser Fehler nicht so leicht.
  5. Ändern Sie das Programm (Kommentare reichen aus; fügen Sie z.B. einen Kommentar-Header der Art "/* hello world */" ein) und checken Sie die Änderung mit einem geeigneten Änderungskommentar ein. Verwenden Sie dazu das Programm "svn" mit den Unterkommandos "checkout" (co) bzw. "commit" (ci).
  6. Lassen Sie sich mit "svn diff" die Änderungen zwischen den Versionen anzeigen.
  7. Checken Sie Ihr Programm in ein anderes Verzeichnis aus, führen Sie dort eine Änderung durch und checken Sie sie ein. Wechseln Sie anschließend in das vorherige Verzeichnis und führen Sie in derselben Zeile (es dürfen auch mehrere Zeilen sein) eine andere Änderung durch (nicht nochmal die gleiche). Versuchen Sie, Ihre Änderung einzuchecken. Erklären Sie die Fehlermeldung und beheben Sie das Problem.
  8. Wechseln Sie in das neue Verzeichnis aus der vorigen Aufgabe und führen Sie ein Update durch. Führen Sie eine Änderung durch und checken Sie sie ein. Wechseln Sie anschließend in das vorherige Verzeichnis, ändern Sie eine andere Datei und checken Sie Ihre Änderung ein. Erklären Sie, wieso es diesmal keine Fehlermeldung gibt.
  9. Benennen Sie mit "svn mv" eine Datei um (z.B. "hw.c" in "hello.c" oder umgekehrt). Checken Sie anschließend ein. Was passiert, wenn Sie "svn" vergessen und das Programm "mv" zum Umbenennen verwenden?
  10. Erzeugen Sie zwei neue Dateien in Ihrem Arbeitsverzeichnis (sie dürfen leer bleiben). Fügen Sie eine der Dateien mit "svn add" Ihrem Arbeitsstand hinzu. Lassen Sie sich anschließend mit "svn status" bzw. "svn status -v" und "svn info" Informationen zu Ihrem Arbeitsstand anzeigen, und erklären Sie die Ausgaben.
  11. Vergleichen Sie die Ausgaben von "svn status" und "svn list". Verwenden Sie bei beiden auch die Option "-v". Wie unterscheiden sich die Kommandos? Die Hilfe und die Dokumentation führen hier weiter.
  12. Ändern Sie mindestens eine Datei in Ihrem Arbeitsverzeichnis. Die Datei sollte mehrere Zeilen haben. (Sie können einfach eine Datei aus einer anderen Veranstaltung einchecken.) Fügen Sie anschließend ein paar Zeilen hinzu, löschen Sie einige, ändern Sie ein paar und lassen Sie einige unverändert. Lassen Sie sich anschließend mit "svn diff" die Unterschiede anzeigen. Wie sind die angezeigten Informationen zu deuten?
  13. Führen Sie ein paar Änderungen an einer beliebigen Datei durch, checken Sie sie aber nicht ein. Mit dem Befehl "svn revert" können Sie lokale Änderungen rückgängig machen. Was passiert dabei?
  14. Falls Sie noch keine Datei mit mehreren Änderungen und Checkins haben, erzeugen Sie eine (z.B. immer ein, zwei nichtleere Zeilen anhängen und dann einchecken). Rufen Sie anschließend "svn annotate" mit der Datei als Argument auf. Was für Informationen bekommen Sie angezeigt, und wofür könnten sie interessant sein?
  15. Erzeugen Sie mittels "svn cp" einen Branch. Erklären Sie, wieso in Kapitel 4 der Subversiondokumentation ein bestimmtes Repositorylayout empfohlen wird. Was passiert, wenn man kein solches Layout verwendet hat, und einen Branch erzeugt?