Mercurial

From Training Material
Jump to navigation Jump to search

This material originates from a source published under the Creative Commons Attribution (CC-BY) License 4.0 in 2014 on bitbucket.org by Kristian Rother. See [1]. Usage and improvement is encouraged!

Training Material

This repository contains training material for Mercurial in German.

The material supports course preparation by providing:

  • structure
  • practical exercises
  • engaging examples
  • ideas for classroom activities
  • a handout

This repository does not contain detailed lesson plans; the material is designed to fit a wide range of audiences and hence, course setups.

While I am striving for trainings that are neither powerless nor pointless, I prefer those that are PowerPoint-less. This is one of them.


Kursübersicht

Dies ist eine Sammlung von Material um Trainings zu Mercurial in deutscher Sprache vorzubereiten. Es unterstützt Dich als Trainer bei der Vorbereitung durch:

  • Eine klare Struktur des Lernstoffes
  • Praktische Übungen
  • Interessante Übungsbeispiele
  • Ideen für interaktive Übungen im Klassenraum
  • Ein Handout

Ein detaillierter Lehrplan ist (noch) nicht vorhanden. Das Material ist für viele verschiedene Lernsituationen geeignet, daher gebe ich keine Erfahrungsstufe, Länge oder Gruppengrösse vor.

Ich strebe danach, Trainings ohne PowerPoint durchzuführen. Bei diesem war ich bisher erfolgreich.

Wie kannst Du diese Materialien verwenden?

1. Wähle Dir aus den Modulen diejenigen aus, die zu Deinen Kursteilnehmern passen. Zu jedem Modul gehören ein Lernziel und ca. 10 kleinere Aufgaben. 2. Probiere die Aufgaben selbst aus. 3. Lege einen Schwierigkeitsgrad für jedes Modul einzeln fest. 4. Schätze wie lange Dein Kurs für die Aufgaben braucht. 5. Reserviere Zeit für eine Einführung und Wiederholung. 6. Füge Ergänzungen zum Repository hinzu und schicke mir ein Pull Request.

Module

1. Gedichtsammlung (10 grundlegende Mercurial-Kommandos) 2. Tic-Tac-Toe (pull zwischen zwei Repositories) 3. Paris-Moskau (Branches erstellen und mergen) 4. Änderungen rückgängig machen

Overview.png

Abstufung der Schwierigkeit

Sehr leicht

Der Trainer führt die Befehle aus dem Kochrezept einzeln an einer für alle sichtbaren Konsole aus. Die Teilnehmer folgen Schritt für Schritt.

Leicht

Der Trainer stellt zu den Aufgaben ein Kochrezept mit den einzugebenden Befehlen zur Verfügung. Die Teilnehmer arbeiten diese selbständig ab.

Anspruchsvoll

Der Trainer stellt die Befehle einzeln vor. Dann gibt er die Aufgaben und die Befehlsreferenz an die Teilnehmer. Die Teilnehmer entwickeln die einzugebenden Befehle selbst.

Schwer

Der Trainer gibt die Aufgaben und die Befehlsreferenz an die Teilnehmer. Die Teilnehmer entwickeln die einzugebenden Befehle selbst.

Sehr schwer

Der Trainer gibt die Aufgaben an die Teilnehmer. Diese finden alles weitere selbst heraus.

Einsatz von Moderationskarten mit hg-Befehlen

Die Karten mit den Namen der verwendeten hg-Kommandos dienen im Training als *Wissensspeicher*. Sie können parallel zum Vorstellen der einzelnen Befehle sichtbar gemacht werden (Pinnwand, Tafel, Flipchart). Die Karten markieren den Fortschritt der Teilnehmer und können später für eine Wiederholung oder Vertiefung genutzt werden.


Modul 1: Hg Kommandos

Trainingsziel

Benutze 10 verschiedene hg-Kommandos.

Hintergrund

Diese Trainingseinheit dient dazu, Versionskontrolle mit Mercurial kennen zu lernen. Dazu wird ausschliesslich mit einem lokalen Repository gearbeitet.

Voraussetzungen

Die Teilnehmer sollten wissen was ein Repository ist und wozu es grundsätzlich gut ist. Sie sollten schon einmal eine Kommandozeile gesehen haben.

Lernstoff

  • hg init
  • hg add
  • hg addremove
  • hg remove
  • hg status
  • hg commit
  • hg rollback
  • hg diff
  • hg log
  • hg help

Aufgaben

1. Erstelle ein neues Repository. 2. Stelle eines der Gedichte unter Versionskontrolle. 3. Stelle mehrere Dateien mit einem Befehl unter Versionskontrolle. 4. Entferne eine Datei aus der Versionskontrolle. 5. Prüfe welche Dateien sich geändert haben. 6. Committe den aktuellen Stand der Dateien. 7. Anulliere das letzte commit. 8. Zeige die Änderungen seit dem letzten commit an. 9. Liste alle erfolgten commits. 10. Zeige verfügbare Hilfethemen an.

Hilfsmittel

  • Die Kommandozeile unter Linux oder Windows
  • Dateien mit Gedichten
  • Kochrezept
  • Befehlsreferenz
  • Karten mit hg-Kommandos


Modul 2: Zusammenarbeit

Trainingsziel

Spiele eine Partie Tic-Tac-Toe mit einem anderen Kursteilnehmer.

Das Tic-Tac-Toe Brett wird in einer Textdatei dargestellt:

    | | 
   -+-+-
    | | 
   -+-+-
    | | 

Bei jedem Commit fügt einer der Spieler eines der Symbole *o* oder *x* in eines der leeren Felder. Beide Spieler versuchen drei gleiche Symbole in einer Reihe zu bekommen.

Hintergrund

In dieser Trainingseinheit lernen Teilnehmer, versionierte Dateien zwischen mehreren Kopien des Repositoriums zu tauschen.

Repository hg.png

Voraussetzungen

Die Teilnehmer sollten die ersten 10 Mercurial-Kommandos beherrschen. Die Teilnehmer müssen in Zweierteams zusammen arbeiten können. Für diese Trainingseinheit ist ein Netzwerk mit für die Kursdauer konstanten IP-Adressen unbedingt erforderlich.

Lernstoff

* hg clone
* hg serve
* .hg/hgrc
* hg incoming
* hg pull
* hg up

Aufgaben

1. Klone das Tic-Tac-Toe Repository vom Server des Kursleiters. 2. Starte einen Mercurial Server auf Port 8000. 3. Rufe im Browser die Seite http://127.0.0.1:8000 auf. 4. Beide Spieler editieren .hg/hgrc um als *default* den Server des Partners einzutragen. 5. Der erste Spieler macht einen Zug, indem er die Textdatei editiert und commited den Zug. 6. Der zweite Spieler schaut ob Änderungen auf dem Server des Partners sind. 7. Der zweite Spieler lädt sich die Änderungen herunter. 8. Der zweite Spieler aktualisiert die Dateien in seinem Verzeichnis. 9. Weiter bei Schritt 5. mit vertauschten Rollen. 10. Beobachte die Änderungen im Browser und mit *hg log*.

Hilfsmittel

* Kommandozeile unter Linux oder Windows
* Repository mit einem leeren Tic-Tac-Toe Brett in einer Textdatei.
* Kochrezept
* Befehlsreferenz
* Karten mit hg-Kommandos

Praktische Umsetzung im Training

Weitere Karten mit hg-Kommandos

Die Karten mit den hg-Kommandos können dem *Wissensspeicher* hinzugefügt werden.

Praxistransfer: Strategien zur Zusammenarbeit

Der Trainer lässt die Teilnehmer Vor- und Nachteile der 5 Strategien aus dem Handout sammeln. Diese lassen sich z.B. als Tabelle an einer Tafel sammeln (Flipchart ist zu klein). Je nach Gruppe kann diese Übung als offenes Gespräch, Erfahrungsberichte oder Gruppenarbeit gestaltet werden.

Diese Übung eignet sich dazu, einen Kurstag zum Ende hin abzurunden, beispielsweise vor der Zusammenfassung / Wiederholung.


Modul 3: Verzweigungen

Trainingsziel

Zeichne Eisenbahnrouten von Paris nach Moskau im Mercurial-Log.

Trage die Eisenbahnroute nach folgenden Regeln ein: 1. Die Bahnhöfe im Streckennetz werden in einer Textdatei *stationen.txt* gespeichert. 2. Jeder Bahnhof nimmt eine Zeile ein. 3. Pro Commit wird genau eine Stadt eingetragen. 4. Die Nachricht zum Commit ist der jeweilige Name der Stadt.

Hintergrund

In dieser Trainingseinheit lernen Teilnehmer, Branches zu verwenden und Änderungen zu vereinen. Dazu sollten sie den Unterschied zwischen Nummern und Hashcodes von Changesets kennen.

Voraussetzungen

Die Teilnehmer sollten die ersten 10 Mercurial-Kommandos beherrschen.

Lernstoff

  • hg serve
  • hg glog
  • hg up <REV>
  • hg branch
  • hg merge

Aufgaben

1. Erstelle ein neues Repository. 2. Starte einen Mercurial Server auf Port 8000. 3. Erstelle die Datei .hgrc im Heimatverzeichnis mit dem Eintrag *glog=*. 4. Erstelle 4 weitere Commits mit Städten auf dem Weg von Paris nach Moskau, einschliesslich der Endpunkte. 5. Springe im Repository zum Changeset mit der ersten Zwischenstation zurück. 6. Erstelle einen Branch mit einer alternativen nördlichen oder südlichen Route. 7. Füge dort zwei weitere Zwischenstationen hinzu. 8. Springe im Repository zum letzen Changeset im Branch 'default'. 9. Vereine die beiden Teilstrecken. Löse den Konflikt zwischen den Dateien beider branches so auf, dass jeder Bahnhof einmal vorkommt. 10. Committe das Ergebnis und begutachte den Graphen im Log und im Browser.

Hilfsmittel

  • Kommandozeile unter Linux oder Windows
  • Europakarte
  • Editor zum Auflösen von Konflikten (z.B. KDiff3).
  • Kochrezept
  • Befehlsreferenz
  • Beispiel .hgrc
  • Karten mit hg-Kommandos

Vertiefung: Merge mit und ohne Konflikte

Frage die Teilnehmer unter welchen Umständen ein Merge zweier Branches zu einem Konflikt führt. Probiert ein Beispiel mit Konflikt und eines ohne aus.


Modul 4: Änderungen rückgängig machen

Trainingsziel

Vergleiche verschiedene Möglichkeiten, Änderungen aufzuheben.

Hintergrund

Änderungen im Nachhinein zu ändern, ist ein Hauptzweck eines Versionskontrollsystems. Es gibt viele Situationen in denen das nötig sein kann: das ganze Repository soll zu einer früheren Version, eine einzelne Datei ist zu ändern, oder nur eine einzige Zeile, für die die Änderung weit zurückliegt. Es ist daher nicht verwunderlich, dass es viele Befehle zu diesem Zweck gibt.

Möglichkeiten Änderungen aufzuheben

  • hg up <REV>
  • hg rollback
  • hg revert -a
  • hg revert -r <REV> <DATEI>
  • hg pull -b <BRANCH>
  • hg clone -b <BRANCH>
  • hg backout <REV>
  • manuell Datei raus / reinkopieren
  • hg patch


TODO: Topics not covered in detail by the material =

  • hg tags
  • hg push und hg outgoing
  • Pull request erstellen
  • überflüssige heads löschen (mit clone und hg commit --close-branch)
  • Patches verwenden

Tools hg.png Media:mercurial_handout.odt