Git und Mercurial sind sowohl freie Softwarewerkzeuge für die verteilte Revisionskontrolle als auch für die Verwaltung des Software-Quellcodes.
Sowohl Git als auch Mercurial wurden ungefähr zur gleichen Zeit mit ähnlichen Zielen gestartet. Der unmittelbare Anstoß war die Ankündigung von Bitmover im April 2005, die kostenlose Version von BitKeeper zurückzuziehen, die für die Versionskontrollanforderungen des Linux-Kernelprojekts verwendet wurde. Der Entwickler von Mercurial, Matt Mackall, entschied sich für ein verteiltes Versionskontrollsystem als Ersatz für die Verwendung mit dem Linux-Kernel. Am 19. April 2005 gab Mackall erstmals Mercurial bekannt.
Git wurde von Linus Torvalds für die Linux-Kernel-Entwicklung mit dem Schwerpunkt auf Schnelligkeit entwickelt. Die Entwicklung von Git begann am 3. April 2005. Das Projekt wurde am 6. April angekündigt und wurde am 7. April zur Selbsthosting-Gruppe. Die erste Zusammenlegung mehrerer Niederlassungen erfolgte am 18. April.
Das Linux-Kernelprojekt hat sich dafür entschieden, Git anstelle von Mercurial zu verwenden, aber Mercurial wird jetzt von vielen anderen Projekten verwendet.
Git | Mercurial | |
---|---|---|
Eingebauter Webserver | Nein | Ja |
Hooks vor / nach dem Ereignis | Ja | Ja |
Konvertierungen am Zeilenende | Ja | Ja |
Stichworte | Ja | Ja |
Internationale Unterstützung | Teilweise | Ja |
Datei umbenannt | Ja (implizit) | Ja |
Umbenennen von Dateien | Ja | Ja |
Symbolische Links | Ja | Ja |
Open Source | Ja | Ja |
Signierte Revisionen | Ja | Ja |
Versions-IDs | SHA-1-Hashes | Zahlen, SHA-1-Hashes |
Atomic begeht | Ja | Ja |
Geschichtsmodell | Schnappschuss | Änderungssatz |
Repository-Größe | O (Patch) (Big O-Notation) | O (Patch) (Big O-Notation) |
Gleichzeitigkeitsmodell | Verschmelzen | Verschmelzen |
Betriebssysteme | Unix-artig, Windows, Mac OS X | Unix-artig, Windows, Mac OS X |
Bühnenbereich | Ja | Nein |
Externe Zweigstelle | Ja | Nein |
Kosten | Kostenlos | Kostenlos |
RCS-Schlüsselwort | Ja, aber nicht empfohlen | über das mitgelieferte Plugin |
Flache Kasse / Klon | Ja | Bugzilla-Erweiterung |
Datei- / Verzeichnisnamenverfolgung | Erkennung umbenennen | Tracking umbenennen |
Unterverzeichnis checkout / clone | Nein | Nein |
Repository-Modell | Verteilt | Verteilt |
Erlaubnis einhalten | Nur Ausführungsbit | Nur Ausführungsbit |
Netzwerkprotokolle | custom, custom über ssh, rsync, HTTP, E-Mail-Pakete | HTTP, benutzerdefiniert über SSH, E-Mail-Pakete (mit Standard-Plugin) |
Entwickelt von | Junio Hamano, Linus Torvalds | Matt Mackall |
Instandgehalten von | Junio Hamano | Matt Mackall |
Geschrieben in | C, Bourne Shell, Perl | Python und C |
Tracking zusammenführen | Ja | Ja |
Bug Tracker-Integration | Nein | Trac (via Plugin) |
Lizenz | GPL v2 | GPL v2 |
Webseite | git-scm.com | www.selenic.com/mercurial |
OS | POSIX, schlimmer Windows-Unterstützung | Unix-artig, Windows, Mac OS X |
Einführung (aus Wikipedia) | Git ist ein kostenloses verteiltes Revisionskontroll- oder Software-Quellcode-Verwaltungsprojekt mit dem Schwerpunkt, schnell zu sein. Git wurde ursprünglich von Linus Torvalds für die Linux-Kernel-Entwicklung entwickelt. | Mercurial ist ein plattformübergreifendes, verteiltes Revisionskontrolltool für Softwareentwickler. Es wird hauptsächlich mit der Programmiersprache Python implementiert, enthält jedoch eine in C geschriebene binäre diff-Implementierung. |
Art | Revisionskontrolle | Revisionskontrolle |
Zu den wichtigsten Designzielen von Mercurial zählen hohe Leistung, Skalierbarkeit, Serverunabhängige, vollständig verteilte kollaborative Entwicklung, robuste Handhabung von Nur-Text- und Binärdateien sowie erweiterte Verzweigungs- und Zusammenführungsfunktionen, die konzeptionell einfach bleiben. Es enthält eine integrierte Weboberfläche.
Eines der wichtigsten Konstruktionsziele von Linus Torvalds für Git war die Geschwindigkeit und Effizienz der Abläufe. Andere Entwurfskriterien waren starke Schutzmaßnahmen gegen Korruption, entweder versehentlich oder böswillig.
Mehrere hochkarätige Softwareprojekte verwenden jetzt Git für die Revisionskontrolle, insbesondere den Linux-Kernel, Perl, Samba, X.org Server, Qt (Toolkit), eine Entwicklung für einen Laptop pro Kind (OLPC), das Ruby on Rails-Webframework, VLC , YUI, Merb, Wine, SWI Prolog, GNOME, GStreamer, DragonFly BSD und die mobile Android-Plattform.
Zu den Projekten, die Mercurial verwenden, gehören Adblock Plus, Aldrin, Audacious, Dovecot-IMAP-Server, GNU Octave, NxOS, Nuxeo, Growl, MoinMoin-Wiki-Software, Mozilla, Mutt (E-Mail-Client), Netbeans (IDE), OpenJDK, Python, SAGE, OpenSolaris und die Opensource-Software von Oracle wie Btrfs.
Mercurial wurde ursprünglich für Linux entwickelt. Es wurde auf Windows, Mac OS X und die meisten anderen Unix-ähnlichen Systeme portiert. Mercurial ist hauptsächlich ein Befehlszeilenprogramm.
Git wird hauptsächlich unter Linux entwickelt, kann aber auch auf anderen Unix-ähnlichen Betriebssystemen wie BSD und Solaris verwendet werden.
Git läuft auch unter Windows. Es gibt zwei Varianten:
Alle Operationen von Mercurial werden als Schlüsselwortoptionen für das Treiberprogramm hg aufgerufen, eine Referenz auf das chemische Symbol des Elements Quecksilber. GUI-Schnittstellen für Mercurial beinhalten Hgk (Tcl / Tk). Diese wird als Mercurial-Erweiterung implementiert und ist Teil der offiziellen Version. Dieser Viewer zeigt den gerichteten azyklischen Graphen der Changesets eines Mercurial-Repositorys an. Dieser Viewer kann mit dem Befehl 'hg view' aufgerufen werden, wenn die Erweiterung aktiviert ist. hgk basierte ursprünglich auf einem ähnlichen Werkzeug für git namens gitk. Es gibt einen hgk-Ersatz namens hgview, der in reinem Python geschrieben ist und sowohl gtk- als auch qt-Schnittstellen bietet.
Zu den verwandten Mercurial-Tools gehören:
Alternativen zum Ausführen von Git über eine GUI sind: