mercurialErste Schritte mit Mercurial


Bemerkungen

Mercurial ist ein modernes, verteiltes Versionskontrollsystem (Open Source). Sie haben vielleicht von Git gehört, der heute etwas populärer ist; git und Mercurial sind sehr vergleichbar und bieten meist ähnliche Funktionen.

Entwickler verwenden Mercurial, um Änderungen am Quellcode ihrer Anwendungen zu verfolgen. Es kann verwendet werden, um Änderungen an einem beliebigen Verzeichnis von Dateien zu verfolgen, obwohl dies, wie die meisten Quellcodeverwaltungssysteme, am besten ist, wenn diese Dateien Textdateien sind (im Gegensatz zu Binärdateien). Mercurial ermöglicht auch mehreren Entwicklern das gleichzeitige Arbeiten mit demselben Verzeichnis des Quellcodes. Außerdem verwaltet Mercurial die Änderungen der einzelnen Entwickler und führt diese Änderungen zusammen.

Versionen

Mercurial folgt einem zeitbasierten Veröffentlichungsplan und veröffentlicht alle drei Monate eine Hauptversion (Februar, Mai, August und November). In jedem verbleibenden Monat wird eine Nebenversion veröffentlicht. Beachten Sie, dass Mercurial keine sematic-Versionierung verwendet. Daher gibt es keinen signifikanten Unterschied zwischen 2.9.2 (der letzten der 2.9-Releases) und 3.0.

Abwärtskompatibilität ist eine wichtige Voraussetzung für Mercurial. Daher ist es im Allgemeinen sicher, Ihre Mercurial-Installationen nach Bedarf einfach zu aktualisieren. Es ist jedoch eine gute Idee, dies mindestens alle drei Monate zu tun, da einige Funktionen dazu führen können, dass alte Clients nicht mit neueren Repositorys arbeiten können.

Die Projekte Release Notes Detail ein, was zwischen den Versionen ändert sich , während sich die Upgrade - Hinweise auf eine klare Orientierung bieten , was die Nutzer bewusst sein müssen , wenn ein Upgrade.

Eine Auswahl bemerkenswerter Versionen:

Ausführung Anmerkungen Datum
3,5 Drop-Unterstützung für Python 2.4 und 2.5 2015-07-31
2.1 Einführung von "Phasen" mit Änderungssätzen, die eine sichere Änderung des Verlaufs ermöglichen 2012-02-01
1,9 Führt eine Befehlsserver-API ein, um eine bessere Anwendungsintegration zu unterstützen 2011-07-01
1.7 Neues Repository-Format unterstützt ungewöhnliche Dateinamen 2010-11-01

Verzweigung

Wenn wir unsere Arbeit zum ersten Mal beginnen, müssen wir entscheiden, ob es sich um einen separaten Arbeitsbereich handelt, an dem wir arbeiten, oder ob es sich um einen Teil eines bestehenden Arbeitsbereichs handelt. Wenn es existiert, können wir von diesem Zweig aus arbeiten. Wenn es neu ist, werden wir eine neue Niederlassung gründen.

Unser Workflow ist dann:

  • hg branch MyNewFeature
  • Arbeit Arbeit Arbeit
  • hg commit -m "committing my changes"
  • Arbeit Arbeit Arbeit
  • hg commit -m "more changes"

An dieser Stelle möchten wir unsere Arbeit auf den Remote-Server verschieben. Aber bevor Sie die Änderungen übernehmen (ignorieren Sie dies, wenn es sich um einen neuen Zweig handelt, den Sie noch nicht gepusht haben), müssen wir prüfen, ob an diesem Zweig Änderungen vorgenommen werden. Wir können das überprüfen mit:

hg incoming -b .
 

Wenn in unserer Zweigstelle eingehende Changesets vorhanden sind, müssen wir die Änderungen an der Spitze der Änderungsliste nach oben ziehen.

hg pull -b . --rebase
 

Sobald dies erledigt ist oder keine eingehenden Changesets vorhanden sind, können wir mit dem Push fortfahren.

Wir wollen immer nur unsere aktuelle Arbeit vorantreiben, nicht alles, was wir jemals getan haben. Ich pusche wirklich nie mein gesamtes Repository, sondern meine aktuelle Arbeit. Der Grund dafür ist, dass das Pushing des gesamten Repositorys davon ausgeht, dass ich mehrere Arbeitsbereiche integrieren möchte. Ich möchte jedoch nur meine derzeitige Arbeit integrieren und nur in einer Zeile arbeiten.

Wenn dies das erste Mal ist, treibe ich diesen Zweig:

hg push -b . --new-branch
 

Wenn ich diesen Zweig schon geschoben habe:

hg push -b .
 

Der Befehl "-b." Bedeutet, dass Sie einfach den aktuellen Zweig drücken und nichts anderes.

Um zwischen den Arbeitszweigen zu wechseln :

hg update myBranchName
 

Fertig machen

Siehe auch das Mercurial-Tutorial

Mercurial Repository erstellen

Ein Mercurial-Repository ist einfach ein Verzeichnis (als "Arbeitsverzeichnis" bezeichnet), das ein .hg Verzeichnis mit Metadaten zum Inhalt des Repositorys enthält. Dies macht Mercurial sehr leicht und einfach zu bedienen. Um ein neues Repository zu erstellen, führen Sie einfach Folgendes aus:

$ hg init project
 

project ist der Name des Verzeichnisses, das Sie erstellen möchten. Dadurch wird ein project zusammen mit einem project/.hg Verzeichnis erstellt, das das Repository selbst enthält.

   $ cd project
   $ echo Hello World > hello.txt
   $ hg stat
   ? hello.txt
 

Wir haben gerade eine hello.txt Datei im Repository erstellt und den hg status (oder kurz stat ) ausgeführt, um den aktuellen Status unseres Repositorys hello.txt . Wie Sie sehen, ist hello.txt mit einem hello.txt versehen ? bedeutet, dass Mercurial sich dessen noch nicht bewusst ist. Mit add Befehl add diese neue Datei bei Mercurial registriert, damit sie beim nächsten Commit berücksichtigt wird.

$ hg add hello.txt
 

Jetzt, da Mercurial eine geänderte Datei kennt, können Sie diff ausführen, um genau zu sehen, was seit dem letzten Commit geändert wurde. In diesem Fall fügen wir den vollständigen Inhalt von hello.txt :

$ hg diff
diff -r 000000000000 hello.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/hello.txt Sat Jul 23 01:38:44 2016 -0400
@@ -0,0 +1,1 @@
+Hello
 

Und sobald wir mit ihnen zufrieden sind und bereit sind, unsere Änderungen einzusehen, können wir uns commit :

$ hg commit -m "Created a hello world file."
 

Beachten Sie, dass wir zusammen mit -m eine Festschreibungsnachricht -m Wenn Sie nicht angeben, dass -m Mercurial einen Texteditor startet, können Sie eine Festschreibungsnachricht eingeben. Dies ist nützlich, wenn Sie eine längere mehrzeilige Nachricht eingeben möchten.

Nachdem Sie Ihre Änderungen festgelegt haben, werden sie nicht mehr angezeigt, wenn Sie hg stat ausführen, da das Repository jetzt mit dem Inhalt des Arbeitsverzeichnisses synchron ist. Sie können das log ausführen, um eine Liste der Commits -v enthält zusätzliche Details wie die Dateien, die bei jedem Commit berührt werden:

$ hg log -v
changeset:   0:b4c06cc77a42
tag:         tip
user:        Michael Diamond@Aodh <dimo414@gmail.com>
date:        Sat Jul 23 01:44:23 2016 -0400
files:       hello.txt
description:
Created a hello world file.
 

Installation und Einrichtung

Sie können Mercurial von der Website des Projekts herunterladen. Es gibt grafische Dienstprogramme für Windows, Linux und OSX, falls Sie dies einer Befehlszeilenschnittstelle vorziehen möchten. Die meisten Unix-Paketmanager enthalten Mercurial, beispielsweise unter Debian / Ubuntu:

$ apt-get install mercurial
 

Sie können die Installation von Mercurial überprüfen, indem Sie Folgendes ausführen:

$ hg --version
 

Konfiguration

Mercurial funktioniert sofort, aber Sie sollten Mercurial wahrscheinlich so konfigurieren, dass Sie wissen, wer Sie sind, bevor Sie fortfahren. Um einen Benutzernamen mit Ihren Commits zu ~/.hgrc bearbeiten Sie ~/.hgrc (oder mercurial.ini in Ihrem Home-Verzeichnis unter Windows) und fügen Sie die folgenden Zeilen hinzu:

[ui]
username = Your Name <your@email.address>
 

Wenn Sie dies nicht möchten, können Sie immer einen Benutzernamen angeben, wenn Sie mit dem Flag -u ein Commit -u , z.

$ hg commit -u "Your Name <your@email.address>"
 

Schieben und ziehen

Mercurial macht es Ihnen leicht, Ihre Arbeit mit anderen zu teilen und Beiträge von anderen Entwicklern einzuholen. Dies umfasst drei wichtige Schritte; Klonen , Ziehen und Schieben .

Klon

Um ein Remote-Repository auf Ihre lokale Festplatte zu kopieren, "klonen" Sie es. Dazu übergeben Sie einfach die Remote-URL, von der aus Sie klonen möchten. Um den Mercurial-Quellcode zu klonen, führen Sie einfach Folgendes aus:

$ hg clone https://selenic.com/hg
 

Dadurch wird ein lokales hg Verzeichnis erstellt, das eine Kopie des Mercurial-Repositorys enthält, das Sie erstellen, bearbeiten und festschreiben können (obwohl Sie Ihre Commits nicht im übergeordneten Repository veröffentlichen können).

ziehen

Nachdem Sie ein Repository ausgecheckt haben, sollten Sie es synchron halten, da andere Benutzer Änderungen daran veröffentlichen. Sie können neue Änderungen abrufen, indem Sie einfach Folgendes ausführen:

$ hg pull
 

Dadurch werden neue Commits abgerufen, das Arbeitsverzeichnis wird jedoch nicht aktualisiert, sodass Sie keine Änderungen sofort sehen. So aktualisieren Sie den Inhalt des Arbeitsverzeichnisses:

$ hg up
 

Die aktualisiert Ihr Arbeitsverzeichnis mit der neuesten Revision im Repository.

Sie können auch ausführen:

$ hg pull -u
 

Neue Änderungen übernehmen und das Arbeitsverzeichnis in einem Schritt aktualisieren.

drücken

Vorausgesetzt, Sie haben Schreibzugriff auf das Remote-Repository, können Sie alle Commits, die Sie lokal abgegeben haben, genauso einfach mit dem Remote-Repository veröffentlichen:

$ hg push
 

Dadurch werden Ihre Änderungen hochgeladen, solange seit dem letzten Ziehen keine weiteren Commits ausgeführt wurden. Wenn Ihr push abgelehnt wird, weil er "zusätzliche Köpfe erstellen" würde, müssen Sie die neuen Änderungen einlesen und mit Ihren eigenen zusammenführen.

$ hg pull
$ hg merge  # this creates a new changeset merging your changes with the remote changes
$ hg commit -m "Merged in remote changes"
$ hg push
 

In den meisten Fällen ist dies alles, was Sie tun müssen, da Mercurial die Änderungen automatisch zusammenführt. Manchmal müssen Sie jedoch Zusammenführungskonflikte manuell lösen (siehe Thema Zusammenführen). Wenn Sie möchten, können Sie eine Zusammenführung jederzeit abbrechen und zu einem sauberen Arbeitsverzeichnis zurückkehren mit:

$ hg up -c
 

Denken Sie jedoch daran, dass dies eine zerstörerische Operation ist. Alle Änderungen im Arbeitsverzeichnis werden gelöscht.