Versionsverwaltung mit Mercurial für Einsteiger =============================================== Versionsverwaltungsprogramme [1] (engl. Version Control System, VCS [2]) sind vor allem als Werkzeuge zum Schreiben von Software bekannt. Sie helfen aber auch beim Verwalten vieler anderer Projekte, zum Beispiel Berichten oder Diplomarbeiten. Dieser Vortrag für Einsteiger erläutert einige Möglichkeiten am Beispiel der Versionsverwaltung Mercurial ([3], [4]). Dabei wird auf der Kommandozeile (Shell) und mit Textdateien (zum Beispiel LaTeX oder Programm-Quelltexten) gearbeitet. Besucher des Vortrags sollten also grundlegende Unix-Kommandos der Shell kennen und schon einmal mit einem Texteditor, zum Beispiel dem Gnome-Texteditor [5] oder Vim [6], gearbeitet haben. Dieser Vortrag möchte diejenigen, die noch keine Versionsverwaltung einsetzen, davon überzeugen, dies in Zukunft zu tun. Eine Versionsverwaltung ist eine Zeitmaschine für Verzeichnisse und Dateien. Sie erlaubt den Zugriff auf Zwischenstände der Arbeit an diesen Daten. Der Nutzer der Versionsverwaltung legt fest, wann jeweils ein "Schnappschuss" des aktuellen Stands, auch als "Version" bezeichnet, gemacht werden soll. Zwischen früheren und späteren Versionen kann beliebig gewechselt werden. Auch ohne einen expliziten Wechsel lässt sich feststellen, wie sich der aktuelle Stand von einer beliebigen früheren Version unterscheidet oder zwei beliebige Versionen untereinander. Bei der Arbeit mit einem Versionsverwaltungssystem unterscheidet man zwischen dem Arbeitsverzeichnis und dem so genannten Repository. Das Arbeitsverzeichnis ist, wie der Name sagt, das Verzeichnis, in dem die Weiterentwicklung einer Software oder allgemein von Texten stattfindet; dieses gibt es also auch, wenn man keine Versionsverwaltung nutzt. Verwendet man eine Versionsverwaltung, verwaltet diese ein Repository, in dem alle vom Nutzer definierten Versionsstände vermerkt werden. Im Vortrag wird in der Shell gezeigt, wie diese Konzepte mit den Kommandos des Versionsverwaltungssystems Mercurial praktisch umgesetzt werden. Das geschieht mit den folgenden Befehlen: - "hg init", um ein Repository anzulegen; - "hg add" und "hg remove", um Daten unter Versionsverwaltung zu stellen oder dies aufzuheben; - "hg commit", um Änderungen im Arbeitsverzeichnis ins Repository zu übernehmen, also eine Version, einen Schnappschuss anzulegen; - "hg status", "hg log", "hg diff" und "hg annotate", um Informationen über Unterschiede zwischen Repository und Arbeitsverzeichnis beziehungsweise zwischen verschiedenen Versionen im Repository anzuzeigen; - "hg update", um das Arbeitsverzeichnis auf ausgewählte frühere Versionsstände zu bringen; - "hg move" und "hg copy", um der Versionsverwaltung mitzuteilen, dass Daten an einer anderen oder zusätzlichen Stelle verwaltet werden sollen. Am Ende des Vortrags ist Zeit für Fragen und kurze Diskussionen, die auch anschließend fortgesetzt werden können. ----- [1] http://de.wikipedia.org/wiki/Versionsverwaltung [2] http://en.wikipedia.org/wiki/Revision_control [3] http://www.selenic.com/mercurial/wiki/ [4] http://de.wikipedia.org/wiki/Mercurial [5] http://projects.gnome.org/gedit/ [6] http://www.vim.org/