Mercurial vs. Git

Git e Mercurial sono entrambi strumenti software gratuiti per il controllo di revisione distribuito e la gestione del codice sorgente del software.

Sia Git che Mercurial sono stati avviati all'incirca nello stesso momento con obiettivi simili. Lo stimolo immediato è stato l'annuncio nell'aprile 2005 di Bitmover di ritirare la versione gratuita di BitKeeper, che era stata utilizzata per i requisiti di controllo della versione del progetto del kernel Linux. Il creatore di Mercurial Matt Mackall ha deciso di scrivere un sistema di controllo di versione distribuito in sostituzione per l'uso con il kernel Linux. Mackall annunciò per la prima volta Mercurial il 19 aprile 2005.

Git è stato creato da Linus Torvalds per lo sviluppo del kernel Linux, con l'accento di essere veloce. Lo sviluppo di Git è iniziato il 3 aprile 2005. Il progetto è stato annunciato il 6 aprile e è diventato self-hosting dal 7 aprile. La prima fusione di più filiali è stata fatta il 18 aprile.

Il progetto del kernel Linux ha deciso di utilizzare Git piuttosto che Mercurial, ma Mercurial è ora utilizzato da molti altri progetti.

Tabella di confronto

Git contro grafico comparativo di Mercurial
Idiota mutevole
Web server integratoNo
Ganci pre / post evento
Conversioni di fine linea
tag
Supporto internazionaleParziale
Rinomina fileSì (implicito)
Unisci i nomi dei file
Collegamenti simbolici
Open source
Revisioni firmate
ID di revisioneHash SHA-1Numeri, hash SHA-1
Atomic si impegna
Modello storicoistantaneachangeset
Dimensione del repositoryO (patch) (Notazione O grande)O (patch) (Notazione O grande)
Modello di concorrenzaMergeMerge
Sistemi operativiSimile a Unix, Windows, Mac OS X.Simile a Unix, Windows, Mac OS X.
Area di sostaNo
Ramo esternoNo
CostoGratuitoGratuito
Parola chiave RCSSì, ma non raccomandatotramite plugin in bundle
Cassa / clone poco profondiEstensione Bugzilla
Tracciamento nome file / dirRinomina rilevamentoRinomina il monitoraggio
Controllo / clone della sottodirectoryNoNo
Modello di depositodistribuitodistribuito
Conservazione dell'autorizzazioneSolo bit di esecuzioneSolo bit di esecuzione
Protocolli di retepersonalizzato, personalizzato su bundle ssh, rsync, HTTP, e-mailHTTP, personalizzati su ssh, bundle e-mail (con plug-in standard)
Sviluppato daJunio ​​Hamano, Linus TorvaldsMatt Mackall
Mantenuto daJunio ​​HamanoMatt Mackall
Scritto inC, Bourne Shell, PerlPython e C
Unisci tracciamento
Integrazione di Bug TrackerNoTrac (tramite plugin)
LicenzaGPL v2GPL v2
Sito webgit-scm.comwww.selenic.com/mercurial
OSPOSIX, peggio supporto per WindowsSimile a Unix, Windows, Mac OS X.
Introduzione (da Wikipedia)Git è un controllo di revisione distribuito gratuito o un progetto di gestione del codice sorgente del software con l'accento di essere veloce. Git è stato inizialmente creato da Linus Torvalds per lo sviluppo del kernel Linux.Mercurial è uno strumento di controllo di revisione distribuito multipiattaforma per sviluppatori di software. È implementato principalmente usando il linguaggio di programmazione Python, ma include un'implementazione diff binaria scritta in C.
genereControllo di revisioneControllo di revisione

Obiettivi di progettazione

I principali obiettivi di progettazione di Mercurial includono alte prestazioni, scalabilità, essendo uno sviluppo collaborativo senza server e completamente distribuito, una solida gestione di file binari e di testo semplice e funzionalità avanzate di ramificazione e fusione, pur rimanendo concettualmente semplici. Include un'interfaccia web integrata.

Uno degli obiettivi di progettazione chiave di Linus Torvalds per Git era la velocità e l'efficienza delle operazioni. Altri criteri di progettazione includevano forti garanzie contro la corruzione, sia accidentali che dannose.

Progetti che utilizzano Git vs Progetti che utilizzano Mercurial

Diversi progetti software di alto profilo ora utilizzano Git per il controllo delle revisioni, in particolare il kernel Linux, Perl, Samba, X.org Server, Qt (toolkit), sviluppo core One Laptop per Child (OLPC), framework Web Ruby on Rails, VLC, YUI, Merb, Wine, SWI Prolog, GNOME, GStreamer, DragonFly BSD e la piattaforma mobile Android.

I progetti che utilizzano Mercurial includono Adblock Plus, Aldrin, Audacious, server IMAP Dovecot, GNU Octave, NxOS, Nuxeo, Growl, software wiki MoinMoin, Mozilla, Mutt (client di posta elettronica), Netbeans (IDE), OpenJDK, Python, SAGE, OpenSolaris di Sun Microsystem e il software Oracle OpenSource come Btrfs.

Git vs Mercurial Portability

Inizialmente Mercurial è stato scritto per essere eseguito su Linux. È stato portato su Windows, Mac OS X e molti altri sistemi simili a Unix. Mercurial è principalmente un programma da riga di comando.

Git è sviluppato principalmente su Linux, ma può essere utilizzato su altri sistemi operativi simili a Unix, inclusi BSD e Solaris.

Git funziona anche su Windows. Esistono due varianti:

  • Una porta nativa di Microsoft Windows, chiamata msysgit, si sta avvicinando al completamento. A partire da febbraio 2009, ci sono programmi di installazione scaricabili pronti per il test. Alcuni comandi non sono ancora disponibili dalle GUI e devono essere richiamati dalla riga di comando.
  • Git funziona anche su Cygwin (un livello di emulazione POSIX), sebbene sia notevolmente più lento, specialmente per i comandi scritti come script di shell.

Interfaccia utente per Git vs Mercurial

Tutte le operazioni di Mercurial sono invocate come opzioni di parole chiave per il suo programma di guida hg, un riferimento al simbolo chimico dell'elemento mercurio. Le interfacce GUI per Mercurial includono Hgk (Tcl / Tk). Questo è implementato come estensione Mercurial e fa parte della versione ufficiale. Questo visualizzatore visualizza il grafico aciclico diretto dei changeset di un repository Mercurial. Questo visualizzatore può essere richiamato tramite il comando 'hg view', se l'estensione è abilitata. hgk era originariamente basato su uno strumento simile per git chiamato gitk. C'è una sostituzione hgk denominata hgview che è scritta in puro Python e fornisce sia interfacce gtk che qt.

Gli strumenti Mercurial correlati includono:

  • Gli strumenti correlati per la fusione includono (h) gct (Qt) e Meld.
  • L'estensione di conversione consente l'importazione da repository CVS, Darcs, git, GNU Arch, Monotone e Subversion.
  • Netbeans IDE supporta Mercurial dalla versione 6.
  • Tortoise Hg offre un'interfaccia di menu di facile utilizzo per Windows, facendo clic con il tasto destro.
  • VisualHG è un plug-in del provider di controllo del codice sorgente Mercurial per MS Visual Studio 2008.
  • Mercurial Eclipse è un plug-in del provider del team Eclipse per Eclipse 3.3 e versioni successive.

Le alternative per eseguire Git utilizzando una GUI includono:

  • git-cvsserver (che emula un server CVS, consentendo l'uso di client CVS Windows)
  • Client Git basato su IDE Eclipse, basato su una pura implementazione Java degli interni di Git: egit
  • Il supporto IDE di NetBeans per Git è in fase di sviluppo.
  • Un'estensione di Windows Explorer (un TortoiseCVS / TortoiseSVN-lookalike) è stata avviata da TortoiseGit e Git Extensions che è un'estensione di Explorer, una GUI autonoma e un plug-in Visual Studio 2008

Video collegati

Articoli Correlati