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
Idiota | mutevole | |
---|---|---|
Web server integrato | No | sì |
Ganci pre / post evento | sì | sì |
Conversioni di fine linea | sì | sì |
tag | sì | sì |
Supporto internazionale | Parziale | sì |
Rinomina file | Sì (implicito) | sì |
Unisci i nomi dei file | sì | sì |
Collegamenti simbolici | sì | sì |
Open source | sì | sì |
Revisioni firmate | sì | sì |
ID di revisione | Hash SHA-1 | Numeri, hash SHA-1 |
Atomic si impegna | sì | sì |
Modello storico | istantanea | changeset |
Dimensione del repository | O (patch) (Notazione O grande) | O (patch) (Notazione O grande) |
Modello di concorrenza | Merge | Merge |
Sistemi operativi | Simile a Unix, Windows, Mac OS X. | Simile a Unix, Windows, Mac OS X. |
Area di sosta | sì | No |
Ramo esterno | sì | No |
Costo | Gratuito | Gratuito |
Parola chiave RCS | Sì, ma non raccomandato | tramite plugin in bundle |
Cassa / clone poco profondi | sì | Estensione Bugzilla |
Tracciamento nome file / dir | Rinomina rilevamento | Rinomina il monitoraggio |
Controllo / clone della sottodirectory | No | No |
Modello di deposito | distribuito | distribuito |
Conservazione dell'autorizzazione | Solo bit di esecuzione | Solo bit di esecuzione |
Protocolli di rete | personalizzato, personalizzato su bundle ssh, rsync, HTTP, e-mail | HTTP, personalizzati su ssh, bundle e-mail (con plug-in standard) |
Sviluppato da | Junio Hamano, Linus Torvalds | Matt Mackall |
Mantenuto da | Junio Hamano | Matt Mackall |
Scritto in | C, Bourne Shell, Perl | Python e C |
Unisci tracciamento | sì | sì |
Integrazione di Bug Tracker | No | Trac (tramite plugin) |
Licenza | GPL v2 | GPL v2 |
Sito web | git-scm.com | www.selenic.com/mercurial |
OS | POSIX, peggio supporto per Windows | Simile 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. |
genere | Controllo di revisione | Controllo 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