Git und Mercurial

7

Ich würde gerne wissen:

  • Was ist der Unterschied zwischen Git und Mercurial?
  • Was sind die Vor- und Nachteile ihrer Verwendung?
  • Wie gut ist die Windows-Unterstützung für beide Tools?
Michael Ellick Ang
quelle
StackOverflow ( stackoverflow.com ) ist hierfür besser geeignet, obwohl ich nicht sicher bin, ob sie eher für diskussionsbasierte Fragen ohne klare Antwort als für ServerFault sprechen.
Sh-Beta
1
Nun, scm wird normalerweise von Entwicklern verwendet, aber der Systemadministrator verwendet sie auch für die Bereitstellung. Deshalb habe ich die Frage hier gestellt.
Michael Ellick Ang

Antworten:

3

Erstens wird eines von beiden einen großen Fortschritt gegenüber älteren Systemen darstellen - es gibt wirklich keine schlechte Option.

Git ist etwas schwieriger zu bedienen, aber spürbar schneller und wohl leistungsfähiger.

Mercurial ist freundlicher und dank TortoiseHg unter Windows viel einfacher zu verwenden.

In beiden Fällen haben Sie die Möglichkeit eines exzellenten Hostings (GitHub, Bitbucket, eventuell Google Code), vieler Anleitungen und Migrationstools von anderen Systemen. Wenn Sie Windows-Benutzer benötigen, würde ich Mercurial empfehlen. Andernfalls ist es wahrscheinlich sinnvoll, beide zu testen und herauszufinden, welche Sie bevorzugen. Ich finde Mercurial bequemer, aber Git ist nicht weit dahinter und hat einige gruselig-coole Funktionen (ierebase -i).

Chris Adams
quelle
2

Git und Mercurial haben mehr gemeinsam als sie sich unterscheiden. Beide sind ausgezeichnet.

Ich benutze Mercurial und habe keine Erfahrung mit Git. Von Freunden, die Git benutzen, höre ich, dass es etwas gewöhnungsbedürftig ist, aber danach ist es großartig.

Windows-Unterstützung ... Ich glaube, es gibt GUI-Frontends für beide. Mercurial ist in Python geschrieben, also keine Probleme.

dwc
quelle
2

Was ist der Unterschied zwischen Git und Quecksilber?

Es gibt zahlreiche detaillierte DVCS-Studien (siehe Links in den obigen Antworten). Ich mochte diesen aktuellen Blog: http://stevelosh.com/blog/2010/01/the-real-difference-between-mercurial-and-git/ und stimme dem durchaus zu. Das große Plus für Git heute (Anfang 2010) ist wahrscheinlich Github! :-)

Was sind die Vor- und Nachteile ihrer Verwendung?

Wenn Sie keine besonderen Anforderungen haben, würde ich sagen, dass beide in 99% der Fälle sehr gut darin sind, das zu tun, was Sie brauchen.

Ich habe gehört, dass die Unterstützung von Git Windows nicht gut war (dh Cygwin benötigt, was die meisten Windows-Entwickler nicht haben), aber nachdem ich eine Demo von TortoiseGit gesehen habe, würde ich sagen, dass es nicht mehr stimmt.

Ich habe auch gehört, dass Sie Dateien / Verzeichnisse in Git leicht und nicht in Mercurial auslöschen können, aber ich habe gerade festgestellt, dass convert --filemapes auch einfach ist! Auch Erweiterungen in Shell oder Python können sehr leistungsfähig sein (zum Erstellen von Befehlen usw.), und die Warteschlangenerweiterung ermöglicht das Bereinigen des Verlaufs durch erneutes Basieren, wie in Git.

Zusammenfassend lässt sich sagen, dass die Unterschiede tendenziell kleiner werden: Schauen Sie sich beide an und wählen Sie, welche beide gut sind. Wenn Sie beispielsweise bereits mit Subversion vertraut sind, ist Mercurial möglicherweise einfacher zu handhaben, da ähnliche Befehle mehr übereinstimmen als in Git.

Wie gut unterstützt Windows beide Tools?

Siehe oben.

Hoffe es wird helfen.

Prost,
Christophe.


quelle
2

Ich mag verteilte Revisionskontrollsysteme: Git vs. Mercurial vs. SVN :

ist eine Reihe von Werkzeugen, genau wie Unix, und enthält einige Schichten, wie z. B. Sanitär und Porzellan, wobei Quecksilber eher ein einziges Werkzeug ist.

Ich fand es auch besser, unter Windows besser zu arbeiten, als ich anfing, beides zu lernen. Fair für Git zu sein, ist jetzt ziemlich stabil.

Chollida
quelle
2

Für einen Systemadministrator sind Abwärtskompatibilität, Stabilität, Robustheit, Sicherheit und Sicherung meiner Meinung nach wichtige Themen für die Bereitstellung eines neuen Tools. Ich kann Ihnen einige Informationen über Mercurial geben:

  • Abwärtskompatibilität : Mercurial hat eine festgelegte Richtlinie zur Abwärtskompatibilität. Die Regeln besagen, dass verschiedene Versionen von Mercurial immer über HTTP (S) und SSH miteinander kommunizieren können müssen.

    Dies bedeutet, dass Sie Clients sicher aktualisieren können, ohne gleichzeitig den Server zu aktualisieren . Sie können auch das Gegenteil tun und den Server alleine aktualisieren. Dies ist jedoch normalerweise viel weniger wichtig, da neue Funktionen in den Clients angezeigt werden und häufig nichts vom Server erfordern.

    Das Format auf der Festplatte ändert sich manchmal - wir hatten bis jetzt 4 Änderungen. In diesem Fall lehnen alte Clients den Betrieb des Repositorys auf der Festplatte ab (denken Sie jedoch daran, dass sie weiterhin über das Netzwerk pushen / ziehen können). Neue Clients können weiterhin alte Repository-Formate lesen / schreiben und aktualisieren niemals automatisch ein vorhandenes Repository auf ein neues Format, falls das Repository für einen alten Client beispielsweise über NFS freigegeben wird. Alles in allem versuchen wir , Upgrades schmerzlos zu machen .

  • Ausgangsstabilität: Dies hängt eng mit dem oben Gesagten zusammen. Im Rahmen der Kompatibilitätsregeln stellen wir außerdem sicher, dass die Ausgabe von Mercurial stabil ist. Dies bedeutet, dass die Shell-Skripte, die Sie heute schreiben, morgen weiter funktionieren.

  • Robustheit: Wie Git werden Änderungssätze durch einen kryptografischen Hashwert identifiziert, der über jede Änderung und die übergeordneten Änderungssätze berechnet wird. Dies macht es unmöglich, einen Teil der Geschichte zu ändern, ohne dass dies bemerkt wird. Die Hashes werden jedes Mal überprüft, wenn eine Datei ausgecheckt wird.

    Mercurial-Repositorys bestehen aus vielen Revlog-Dateien . Sie sind so konzipiert, dass append-only , die es ermöglicht , durch einfaches Kürzen Sie die Dateien einige Formen von Hardware Korruption zu reparieren. Sie können hg verifyMercurial jederzeit in einem Repository überprüfen lassen, ob alles so ist, wie es sein sollte.

  • Sicherheit: Wenn Repositorys mit SSH gehostet werden , gelten alle normalen Regeln für die Zugriffskontrolle - Mercurial unternimmt nichts Besonderes. Wenn ich mich also anmelden und die Dateien in Ihrem Repository lesen kann, kann ich auch einen Klon erstellen. Wenn ich auch Schreibzugriff habe, kann ich auf das Repository pushen. Dies zu verwalten ist daher einfach: Richten Sie einfach eine Gruppe ein und stellen Sie sicher, dass neue Dateien von den Mitgliedern der Gruppe beschreibbar gemacht werden.

    Beim Hosting mit HTTP (S) übernimmt der Front-End-Webserver die Authentifizierung. Wir bieten ein CGI (mit FastCGI-, WSGI- und ISAPI-Varianten), das mit dem Repository interagiert, das Skript führt jedoch keine Authentifizierung durch. Dies bedeutet, dass es einfach ist, Mercurial in vorhandene Setups zu integrieren: Wenn Sie Active Directory bereits zur Authentifizierung von Benutzern verwenden, können Sie AD mit Mercurial verwenden. In dieser Frage finden Sie weitere Informationen zu AD und Mercurial .

    Schließlich können Sie anstelle des von hgwebuns bereitgestellten CGI-Skripts auch RhodeCode verwenden . Das wird in dieser Frage weiter diskutiert .

  • Backup: Mit dem Nur-Anhängen-Design können Sie fast nur ein "Live" -Repository kopieren, um ein Backup zu erstellen. Es kann jedoch vorkommen, dass Sie auf diese Weise zu viele Daten erhalten, da ein Sicherungsprogramm möglicherweise das "Änderungsprotokoll" kopiert, bevor es das "Manifest" kopiert, während Mercurial das Manifest schreibt, bevor es das Änderungsprotokoll schreibt. Das Änderungsprotokoll verweist auf das Manifest, sodass die Sicherung einen nicht referenzierten Eintrag im Manifest enthält. Durch Ausführen hg verifywird dies hg recovererkannt und die unvollständige Transaktion kann rückgängig gemacht werden.

    Der richtige Weg , um Backups zu machen, ist die Verwendung hg clone. Dadurch wird sichergestellt, dass ein konsistenter Snapshot kopiert wird, auch wenn Benutzer während der Sicherung Daten in das Repository übertragen. Da Sie über das Netzwerk klonen können, können Sie die Daten zur sicheren Aufbewahrung problemlos an einen externen Computer senden.

Martin Geisler
quelle
1

Ein großer Gewinn für Git ist Github und die Art und Weise, wie es Source-Hosting mit einem sozialen Netzwerk verbindet, um die Kultur Ihres Softwareprojekts zu verändern.

Obwohl andere dcvss technisch wahrscheinlich vergleichbar sind, scheint mir Github kulturell ein echter Fortschritt zu sein.

Interstar
quelle