Mercurial vs Git

Git et Mercurial sont des outils logiciels gratuits pour le contrôle de révision distribué et la gestion du code source du logiciel.

Git et Mercurial ont été lancés à peu près au même moment avec des objectifs similaires. Le stimulus immédiat a été l'annonce en avril 2005 par Bitmover qu'ils retiraient la version gratuite de BitKeeper, qui avait été utilisée pour les exigences de contrôle de version du projet de noyau Linux. Le créateur de Mercurial, Matt Mackall, a décidé d'écrire un système de contrôle de version distribué en remplacement pour une utilisation avec le noyau Linux. Mackall a annoncé Mercurial pour la première fois le 19 avril 2005.

Git a été créé par Linus Torvalds pour le développement du noyau Linux, en mettant l'accent sur la rapidité. Le développement de Git a commencé le 3 avril 2005. Le projet a été annoncé le 6 avril et est devenu auto-hébergé le 7 avril. La première fusion de plusieurs succursales a été effectuée le 18 avril.

Le projet du noyau Linux a décidé d'utiliser Git plutôt que Mercurial, mais Mercurial est maintenant utilisé par de nombreux autres projets.

Tableau de comparaison

Tableau de comparaison entre Git et Mercurial
Git Mercuriel
Serveur Web intégréNonOui
Crochets pré / post-événementOuiOui
Conversions de fin de ligneOuiOui
Mots clésOuiOui
Support internationalPartielOui
Renommage de fichiersOui (implicite)Oui
Fusionner les noms de fichiersOuiOui
Liens symboliquesOuiOui
Open sourceOuiOui
Révisions signéesOuiOui
ID de révisionHachage SHA-1Chiffres, hachages SHA-1
Atomic s'engageOuiOui
Modèle d'histoireInstantanéEnsemble de modifications
Taille du référentielO (patch) (notation Big O)O (patch) (notation Big O)
Modèle de simultanéitéFusionnerFusionner
Systèmes d'exploitationUnix, Windows, Mac OS XUnix, Windows, Mac OS X
Zone de transitOuiNon
Branche externeOuiNon
CoûtGratuitGratuit
RCS KeywordOui, mais non recommandévia le plugin fourni
Paiement / clonage peu profondOuiExtension Bugzilla
Suivi des noms de fichiers / dirRenommer la détectionRenommer le suivi
Extraction / clonage de sous-répertoireNonNon
Modèle de référentielDistribuéDistribué
Conservation des autorisationsBit d'exécution uniquementBit d'exécution uniquement
Protocoles réseaupersonnalisé, personnalisé sur ssh, rsync, HTTP, faisceaux d'e-mailsHTTP, personnalisé sur ssh, bundles d'email (avec plugin standard)
Développé parJunio ​​Hamano, Linus TorvaldsMatt Mackall
Entretenu parJunio ​​HamanoMatt Mackall
Écrit enC, Bourne Shell, PerlPython et C
Suivi de fusionOuiOui
Intégration de Bug TrackerNonTrac (via plugin)
LicenceGPL v2GPL v2
Site Internetgit-scm.comwww.selenic.com/mercurial
OSPOSIX, pire support WindowsUnix, Windows, Mac OS X
Introduction (de Wikipedia)Git est un contrôle de révision distribué gratuit, ou un projet de gestion de code source logiciel avec un accent sur la rapidité. Git a été initialement créé par Linus Torvalds pour le développement du noyau Linux.Mercurial est un outil de contrôle de révision distribué multiplateforme pour les développeurs de logiciels. Il est principalement implémenté à l'aide du langage de programmation Python, mais comprend une implémentation de diff binaire écrite en C.
TypeContrôle de révisionContrôle de révision

Objectifs de conception

Les principaux objectifs de conception de Mercurial incluent des performances élevées, une évolutivité, un développement collaboratif sans serveur et entièrement distribué, une gestion robuste des fichiers texte et binaires, et des capacités avancées de branchement et de fusion, tout en restant conceptuellement simples. Il comprend une interface Web intégrée.

L'un des principaux objectifs de conception de Linus Torvalds pour Git était la rapidité et l'efficacité des opérations. Les autres critères de conception comprenaient de solides garanties contre la corruption, accidentelle ou malveillante.

Projets utilisant Git vs Projets utilisant Mercurial

Plusieurs projets logiciels de haut niveau utilisent désormais Git pour le contrôle des révisions, notamment le noyau Linux, Perl, Samba, X.org Server, Qt (toolkit), le développement d'un noyau OLPC (One Laptop per Child), le framework Web Ruby on Rails, VLC, YUI, Merb, Wine, SWI Prolog, GNOME, GStreamer, DragonFly BSD et la plate-forme mobile Android.

Les projets utilisant Mercurial incluent Adblock Plus, Aldrin, Audacious, Dovecot IMAP server, GNU Octave, NxOS, Nuxeo, Growl, le logiciel wiki MoinMoin, Mozilla, Mutt (client de messagerie), Netbeans (IDE), OpenJDK, Python, SAGE, Sun Microsystem's OpenSolaris et le logiciel opensource d'Oracle comme Btrfs.

Portabilité Git vs Mercurial

Mercurial a été initialement écrit pour fonctionner sous Linux. Il a été porté sur Windows, Mac OS X et la plupart des autres systèmes de type Unix. Mercurial est principalement un programme en ligne de commande.

Git est principalement développé sur Linux, mais peut être utilisé sur d'autres systèmes d'exploitation de type Unix, notamment BSD et Solaris.

Git fonctionne également sous Windows. Il existe deux variantes:

  • Un port natif de Microsoft Windows, appelé msysgit est en voie d'achèvement. Depuis février 2009, des programmes d'installation téléchargeables sont prêts à être testés. Certaines commandes ne sont pas encore disponibles à partir des interfaces graphiques et doivent être appelées à partir de la ligne de commande.
  • Git s'exécute également au-dessus de Cygwin (une couche d'émulation POSIX), bien qu'il soit sensiblement plus lent, en particulier pour les commandes écrites sous forme de scripts shell.

Interface utilisateur pour Git vs Mercurial

Toutes les opérations de Mercurial sont invoquées en tant qu'options de mots clés dans son programme de pilotes hg, une référence au symbole chimique de l'élément mercure. Les interfaces GUI pour Mercurial incluent Hgk (Tcl / Tk). Ceci est implémenté comme une extension Mercurial et fait partie de la version officielle. Cette visionneuse affiche le graphique acyclique dirigé des ensembles de modifications d'un référentiel Mercurial. Cette visionneuse peut être invoquée via la commande 'hg view', si l'extension est activée. hgk était à l'origine basé sur un outil similaire pour git appelé gitk. Il existe un remplacement hgk nommé hgview qui est écrit en python pur et fournit à la fois des interfaces gtk et qt.

Les outils Mercurial associés incluent:

  • Les outils associés pour la fusion incluent (h) gct (Qt) et Meld.
  • L'extension convert permet d'importer depuis les référentiels CVS, Darcs, git, GNU Arch, Monotone et Subversion.
  • L'IDE Netbeans prend en charge Mercurial à partir de la version 6.
  • Tortoise Hg fournit une interface de menu contextuelle conviviale pour Windows.
  • VisualHG est un plugin de fournisseur de contrôle de source Mercurial pour MS Visual Studio 2008.
  • Mercurial Eclipse est un plugin de fournisseur d'équipe Eclipse pour Eclipse 3.3 et plus récent.

Les alternatives pour exécuter Git à l'aide d'une interface graphique incluent:

  • git-cvsserver (qui émule un serveur CVS, permettant l'utilisation des clients Windows CVS)
  • Client Git basé sur Eclipse IDE, basé sur une implémentation Java pure des composants internes de Git: egit
  • Le support IDB NetBeans pour Git est en cours de développement.
  • Une extension Windows Explorer (un aspect TortoiseCVS / TortoiseSVN) a été lancée sur TortoiseGit et Git Extensions qui est une extension explorer ainsi qu'une interface graphique autonome et un plug-in Visual Studio 2008

Vidéos connexes

Articles Connexes