Start SlideShow

Versionsverwaltung mit mercurial

@copyright: 2008-2009 ReimarBauer

@license: GPL

Sachverhalt

Unter einer Versionsverwaltung versteht man ein System, welches typischerweise in der Softwareentwicklung zur Versionierung und um den gemeinsamen Zugriff auf Quelltexte zu kontrollieren, eingesetzt wird.

Hierzu werden alle laufenden Änderungen erfasst und alle Versionsstände der Dateien in einem Archiv mit Zeitstempel und Benutzerkennung gesichert.

Beispiel Repository

mercurial

logo-droplets-200.png ist ein plattformunabhängiges, verteiltes Versionskontrollsystem zur Software-Entwicklung, wobei es auch für andere Bereiche eingesetzt werden kann.

Es wurde in Python entwickelt, verwendet allerdings eine binäre diff-Implementierung, die in C geschrieben wurde.

Mercurial wird primär über die Kommandozeile benutzt.

Alle seine Befehle beginnen mit hg, einen Verweis auf das chemische Symbol für Quecksilber.

Mercurial benötigt keinen Server. Ein einziger Befehl reicht aus, um ein normales Verzeichnis unter die Kontrolle von Mercurial zu stellen: hg init

Installation von mercurial

Da mercurial im cheese shop liegt bietet es sich an:

$ easy_install -U mercurial

Hilfe

$ hg

Mercurial Distributed SCM

basic commands:

 add        add the specified files on the next commit
 annotate   show changeset information per file line
 clone      make a copy of an existing repository
 commit     commit the specified files or all outstanding changes
 diff       diff repository (or selected files)

Beispiel

Das Repository wird vollständig in einem einzigen Unterverzeichnis .hg verwaltet. Mit hg add kann man alle Dateien für die Verwaltung im Repository anmelden. Mit hg commit checkt man eine Version des Projektes ein.

$ cd projekt
$ hg init     # erstellt das .hg-Verzeichnis im aktuellen Verzeichnis
$ hg add      # alle Dateien beim Repository anmelden
adding foo
adding bar/baz
$ hg commit -m "Projekt Version 0.1 importiert"

Kontrolle

$ hg log 
changeset:   0:c2c6bcd0ecd4
tag:         tip
user:        Reimar Bauer <R.Bauer AT whereeveriam DOT de>
date:        Sun Jun 15 22:31:03 2008 +0200
summary:     Projekt Version 0.1 importiert

Konfiguration

Dein Name

Editiere ~/.hgrc oder %USERPROFILE%\mercurial.ini und füge hinzu:

[ui]
username=My Name <my address>

push (Erlaubnis für einen zentralen Server)

(Dein ssh key muss auf dem Server vorliegen.) Editiere .hg/hgrc Deines Repository / Clones und füge eine Zeile für das pushen hinzu.

default-push = ssh://hg-USER@URL/MAIN

Schema

Command_Mercurial-Usage.png

master repository (zentraler Server)

working repository

Dein Clone (können auch mehrere beim Einzelnen sein)

Wenn Du fertig bist kannst Du Deine Änderungen mit commit in Deinem repository in einer Revision speichern und mit push in das main repository übertragen. Erst mit dem push stehen dann Deine Änderungen den anderen Entwicklern zur Verfügung.

Änderungen im öffentlichen Repository verfolgen

tour-history.png Wenn im öffentlichen Repository neue Changesets verfügbar sind, können die dortigen Änderungen zu den eigenen hinzugemischt (merge) werden.

Der Befehl zum Holen von Änderungen heisst hg pull und benutzt die beim ersten clone-Befehl verwendete Adresse, sofern nichts anderes angegeben wird.

Durch den pull-Befehl wird nur das Repository (.hg-Verzeichnis) beeinflusst. Das Arbeitsverzeichnis wird nicht aktualisiert, hierzu dient der Befehl hg update (oder kurz hg up).

hg pull -u macht dies in einem Schritt

Arbeiten mit dem clone

changeset/patch regeln

Quellen

Ende

Danke für die Aufmerksamkeit!

MoinMoin: MoinMoinTalks/pyCologne-2009-06 (last edited 2009-06-15 17:47:02 by ThomasWaldmann)