Perché Git ha avuto così tanto clamore? ... mentre gli altri no? [chiuso]


124

Negli ultimi anni, l'hype attorno a Git è cresciuto notevolmente. Tutti conoscono Git, nessuno conosce alternative.

Altri come Mercurial sembrano passare inosservati. Entrambi sono stati rilasciati nel 2005 e offrono funzionalità simili. Inoltre, Mercurial è generalmente considerato più facile da usare, più intuitivo e ha da tempo migliori interfacce utente. Pertanto, si potrebbe presumere che questa sarebbe un'alternativa popolare, specialmente per i nuovi al controllo della versione distribuito. Tuttavia, sembra sconosciuto alla maggior parte delle persone, a differenza di Git che è riuscito abbastanza bene.

Il punto di questo post è cercare di capire meglio questo fenomeno.

Come mai Git ottiene tutto parte della torta? Hanno usato in qualche modo un marketing migliore? È perché la sua comunità è più ... ahem ... "verbosa"? È a causa del nome "Linus"? È a causa della sua immagine geek?

Qual'è la tua opinione?


63
Probabilmente hai ragione sul fatto che Linus Torvalds sia l'unica ragione della sua popolarità ...
Robert Koritnik,

4
Non lo so, sento che mi sono stati esposti in quantità pressoché uguali ... anche se ho sentito parlare di Git prima di HG. Ma sì, Torvalds è una celebrità, quindi è probabile che qualsiasi cosa in cui è coinvolto attiri l'attenzione.
perp

13
Mi piace GitHub ... tutto qui
cnd

7
@jrwren, presenterò questo commento dicendo che non ho usato Git Mercurial. Se dovessi imparare Git e quindi imparare immediatamente Mercurial (o viceversa), uno di loro probabilmente mi prenderebbe meno tempo per imparare. Quello, quello che ha richiesto meno tempo, è quello che considererei più facile da usare. Il trekking in genere implica che ci vuole del tempo per capire, che è quindi più difficile da usare. Non sto dicendo che peggiorerebbe un prodotto, a volte è necessaria una curva di apprendimento più ripida per strumenti più potenti, ma certamente cambia la facilità d'uso.
zzzzBov,

8
@MarkTrapp God, Mark! Sembra che tutti stessero discutendo bene e poi dovevi venire e sorvegliare tutti fuori dalla porta. Vorrei sapere di un sito come StackOverflow che ha permesso discussioni.
Theodore R. Smith,

Risposte:


86

Credo che servizi come GitHub o Gitorious siano un grande fattore. È importante per le persone che possano ospitare le loro cose da qualche parte e soprattutto GitHub è un ottimo servizio per questo.

Per i mercuriali, non esisteva tale servizio quando il DVCS divenne popolare (almeno nessuno di cui ero a conoscenza). Hai Bitbucket ora e probabilmente altri, ma GitHub è lì da un po 'di tempo, è ben noto e migliora sempre di più.


Aggiungete a ciò che alcuni grandi progetti open source usano git che prende la decisione per voi. Sono stato "costretto" a usare git diverse volte (ad esempio per Android) ma non sono stato costretto a usare Mercurial o Bazaar. Inoltre, penso che git sia fantastico :)
FeatureCreep

11
C'è anche Google Code e SourceForge per hg
configuratore

7
Git è potenziato da Github che mette in ombra altri repository. Bitbucket ha alcuni vantaggi (repository privati ​​gratuiti) ma l'interfaccia utente è scarsa rispetto a Github
iandotkelly,

2
Uso Mercurial da solo per parlare con GitHub ... il plug-in hggit ( hg-git.github.com ) consente di separare lo strumento dalla community. Ma forse non dagli strumenti della community.
bpanulla,

1
CodePlex supporta anche Mercurial.
Grant Palin,

86

Vedo molte risposte a ciò che dipendono dai sentimenti che l'autore ha avuto quando ha sentito parlare dell'uno o dell'altro SCM. Altri dicono che è stata una pura fortuna. Credo che la fortuna possa essere ricondotta alla storia.

Parlerò di storia.

Git e Mercurial sono stati creati contemporaneamente per risolvere lo stesso problema. A quei tempi, il kernel Linux era costretto a smettere di usare BitKeeper , un SCM distribuito proprietario che utilizzava da 3 anni. La ragione di ciò era che Larry McVoy, CEO di BitMover, la società dietro BitKeeper, ha smesso di distribuire il suo software gratuitamente agli sviluppatori Linux, perché qualcuno all'interno della comunità Linux lo aveva decodificato.

Linus Torvalds, insoddisfatto di ciò che già esisteva, successivamente iniziò a lavorare su un nuovissimo SCM che avrebbe presto chiamato Git. Subito dopo, Matt Mackall ha avviato il progetto Mercurial per ragioni simili.

Dopo un po 'di tempo a sviluppare questi progetti separatamente, Matt Mackall ha presentato una versione avanzata del suo SCM e lo ha confrontato in un certo modo, confrontandolo con Git (che era di per sé solo un paio di settimane). Linus pensò di usarlo al posto di Git per lo sviluppo del kernel, ma lasciò cadere l'idea quando si rese conto che Mercurial stava usando i changeset per registrare le modifiche di revisione . Temeva che fosse troppo vicino al modo in cui BitKeeper funzionava, e certamente non voleva nulla che potesse far dire a qualcuno: "Hanno costruito un clone di BitKeeper".

Git è stato quindi utilizzato per lo sviluppo del kernel anziché per Mercurial, ma entrambi erano tecnicamente rilevanti. Il risultato finale è che Git ha iniziato ad essere effettivamente utilizzato dove era stato progettato per essere utilizzato, mentre Mercurial non è stato così veloce nel trovare il suo primo grande utilizzo FOSS. Perché era dotato di un ottimo design e grazie alla perseveranza di Matt Mackall, alla fine divenne famoso e si abituò a grandi progetti del mondo reale.

Oggi sono entrambi famosi. Qual è il più famoso è impossibile da dire. Google Code ha integrato Git solo di recente, mentre Mercurial aveva da molto tempo. Molti progetti molto grandi e famosi usano entrambi.

Immagino che intendo, quando il vero motivo per cui hai avviato un progetto svanisce, è più difficile guadagnare popolarità, ma è ancora fattibile.

Bazaar è un altro SCM molto famoso nel mondo GNU, ma non molto al di fuori di quello, perché è stato costruito con l'intento di soddisfare la comunità GNU. Il software spesso va dove vogliono i loro creatori e non oltre.

D'altra parte, gli SCM distribuiti sono chiari vincitori. Non vedo molti SCM non distribuiti ampiamente usati là fuori.


5
Apprezzo molto questa storia.
jrwren,

4
@TMN Hai ragione! In effetti, quando il reverse engineering di Andrew Tridgell venne alla luce e quando Larry McVoy cambiò le licenze di BitKeeper, ci furono così tante guerre di fiamma che Linus Torvalds decise di lasciar perdere e si concesse una settimana per trovare un sostituto. A quel tempo, il vero concorrente era Monotone, ma era pian piano lento. Molte persone hanno costruito i sostituti allo stesso tempo e tutti erano felici di usare i nuovi strumenti. Penso che Git abbia colpito prima 1.0, poi Mercurial; Il bazar ha impiegato quasi due anni.
Thaddee Tyl,

7
"Non vedo molti SCM non distribuiti ampiamente utilizzati là fuori." Dipende da dove ti trovi nel settore. Perforce, ClearCase e svn sono ancora molto usati, solo non tanto (tranne svn) nel mondo open source. Oh, sì, Visual Source Safe e MS Team qualunque cosa sia nei negozi di Windows.
Bob Murphy,

13
Con "reverse engineering" intendi il telnet sul server e digita "help"
alternativa il

3
Direi questo in generale su DVCS e CVCS: "Tutti i software partecipano al Tao e non dovrebbero essere disprezzati". "Compreso il software di Redmond?" "Oh, cavolo, guarda l'orologio. La lezione è stata respinta."
Bob Murphy,

77

Linus Torvalds

Linus è un grande sostenitore di Git e lo ha promosso pesantemente nel gruppo principale di Linux per anni ed è cresciuto da lì. Oserei dire che è interamente dovuto all'influenza di Linus sulla comunità * nix.

Personalmente uso ancora Subversion, ma è per preferenza piuttosto che per utilità.


12
Non penso che sia Linus personalmente tanto quanto l'enorme visibilità di Linux - Ci sono poche cose che potresti dire a qualcuno che non ha una conoscenza precedente del DVCS (o dello sviluppo del software in generale) più propensi a dare credibilità rispetto a "è usato per il Kernel Linux ".
Michael Borgwardt,

6
Non solo ne è un grande sostenitore, ma è stato lui a crearne le versioni originali prima di consegnarlo a Junio ​​Hamano
Marco Ceppi,

44
Che cosa? Perché preferiresti Subversion?
configuratore

11
Non vuoi dire che usi ancora Subversion per abitudine e inerzia, piuttosto che per preferenza o utilità? Ecco perché lo sto ancora usando, e sospetto che anche la maggior parte di noi ...
Cody Gray,

7
@deadalnix: Perché Linux e Linux hanno un'orda di fan sfegatati che non hanno eguali in nessun altro progetto open source. Funzionano come una squadra di strada piuttosto efficace per Git.
Tom Anderson,

34

Il solito punto debole con il sistema di controllo della versione è la fusione dei rami .

Devi averlo provato quando non funziona per capire quanto possa essere doloroso e quanto sia importante lavorare per lavorare liberamente con i rami.

Apprendendo che Linus Torvalds ha scritto git per fare questo in modo corretto, e che presumibilmente in una situazione ha usato git per unire dodici rami contemporaneamente, questo è un argomento molto convincente per fare in modo che git sia interessante.

Ero nella situazione circa un anno fa, dove ho dovuto scegliere tra hg e git, e la fusione sopra è stata un fattore importante nella scelta di git. Il secondo è stato che l'organizzazione Eclipse è passata a git, quindi gli strumenti Eclipse avrebbero funzionato bene per i progetti Java. Con il rilascio di Eclipse 3.7 questo è successo. Eravamo in anticipo di 6-9 mesi.

Per esigenze diverse, hg potrebbe essere altrettanto utile. Sun l'ha scelto per il loro VCS sulla base di un'indagine molto attenta. Potresti voler trovare i white paper e vedere quali erano i loro ragionamenti.


EDIT: Nota, non sto dicendo che non c'è nulla che Mercurial non possa fare, solo quello per Java con Eclipse - che è il nostro obiettivo principale - le forze di mercato sono attualmente più forti per git, anche sotto Windows, e dobbiamo stare sulle spalle di altri, non i loro piedi.


5
+1 È tutto nei rami. Questa analisi discute il potere di fusione di git rispetto a mercurial.
Amelio Vazquez-Reina,

19
@AmV: non pubblicare URL offuscati.
Cody Gray,


4
Non sono sicuro di vedere il tuo punto qui. Stai dicendo che sono ugualmente bravi nella ramificazione (Git non fa nulla che Mercurial non può fare), ma poiché hai bisogno di una buona ramificazione, hai scelto Git?
jalf

8
Non ho mai visto esempi convincenti di come Git sia più bravo a fondersi di Mercurial, e certamente non in questa risposta. È quasi come se stessi confondendo Hg con SVN o CVS.
Aaronaught,

23

Invece di dire perché git o mercurial è meglio e dire che è l'unica ragione per cui è popolare, mi concentrerò sulla comunità.

Come ho sottolineato in precedenza , la comunità Git è molto rumorosa e arrogante. Molti difenderanno con forza il loro prezioso programma. La maggior parte delle guerre Git vs Mercurial che ho visto sono state iniziate da persone git che si chiedevano perché tutti sulla Terra non stessero usando il santo git. Siti come whygitisbetterthanx.com mostrano anche questa arroganza nell'introduzione, che è scritta per attirare gli altri.

Non sto dicendo che tutti sono così, ma la maggior parte delle volte quando ho incontrato persone git, siti web pro-git e blog pro-git mi è sembrato che Git mi venisse spinto in gola invece che offerto come un DVCS praticabile sistema.


Al contrario, altre comunità DVCS non sono così rumorose. Non sapevo che Mercurial esistesse fino a quando non ho visto un "Qual è il miglior DVCS?" domanda su SO. Mentre git appare ovunque, altri DVCS impiegano del tempo per trovare.


16
Chiamare gli altri arroganti non è un po 'arrogante?

21
@ Thorbjørn: Lo è. Tranne quando lo faccio; allora è giusto.
Tom Anderson,

6
Penso che tu sia diventato abbastanza allergico al git. Ho letto l'introduzione di whygitisbetterthanx e alcuni dei suoi contenuti. Non vedo nulla di arrogante o provocatorio. Ha solo il normale pregiudizio, qualsiasi cosa intenda promuovere qualcosa.
back2dos,

5
@ back2dos: è piuttosto arrogante in quanto afferma "Git è meglio di tutto". E in quei pezzi piuttosto ampi della sua argomentazione di supporto è o sbagliato e non corretto, o cancellato, eppure in qualche modo non cambia mai la loro conclusione.
jalf

5
@Agos: E quasi tutti non sono unici per Git. Spostano semplicemente i pali per escludere altri prodotti.
Aaronaught,

14

Non credo che Mercurial abbia un profilo particolarmente basso. Kiln è basato su Hg e da un po 'di tempo c'è un buon supporto negli IDE come Eclipse e Netbeans.

La maggior parte degli sviluppatori con cui parlo sembra preferire Hg a causa del miglior supporto di Windows. Se fossimo sviluppatori Linux, potrebbe essere una storia diversa.

Ti manca anche "Bazaar" che è il vero "DVCS dimenticato".

Certamente sono d'accordo sul fatto che Linus sia un ragazzo molto carismatico e un secchione alfa quasi senza eguali, quindi molte persone graviterebbero su Git per questo. Inoltre, il "mito della creazione" di Git è molto convincente con Linus che lavora per 6 giorni per creare Git e riposare sul settimo - o qualcosa del genere. Quando un prodotto ha una storia memorabile, è più facile ottenere trazione.


6
... sono totalmente d'accordo con: "Bazaar" che è il vero "DVCS dimenticato".
Dagnelies,

d'accordo ma l'esposizione hg dal forno / joel è più recente rispetto all'esposizione git dal linus. hg sta giocando a catchup
jk.

2
In realtà ci sono alcuni "DVCS dimenticati" là fuori, anche se molti di loro sarebbero probabilmente meglio descritti come "di basso profilo", "focalizzati" o "di nicchia".
John Gaines Jr.,

13

È un'opinione modesta, ma git potrebbe ottenere tutto questo clamore a causa di due parametri:

  1. È molto efficiente
  2. È divertente da usare (in una sorta di modo informatico molto specifico)

Inoltre, git ha ottenuto un'app killer come github e alcuni progetti molto popolari hanno deciso di usarla, il che le ha dato molta visibilità.


4
1. Mercurial è inefficiente in alcune aree? In realtà, per molto tempo, è stato più efficiente su http, motivo per cui il codice google lo ha incluso da più di 2 anni, rispetto al supporto git che è stato annunciato la scorsa settimana e solo recentemente è diventato altrettanto buono su http. 2. OK 3. Esiste l'equivalente bitbucket.org
dagnelies il

1
Ho detto che il mercuriale era inefficiente? Non l'ho mai usato, quindi posso dirlo.
Thibault J

4
questo non affronta affatto la domanda imho, almeno non la parte "mentre gli altri non lo facevano"
jk.

1
Mercurial non può aggiungere "cartelle vuote" al repository (non so se questo è stato risolto ora) ma quando ho dovuto scegliere un DVCS, alla fine sono andato git per questo scopo. Avevo bisogno di alcune cartelle vuote.
Martin Marconcini,

4
@ MartínMarconcini Cosa intendi con "Alla fine sono andato git per questo scopo"? git non supporta neanche le cartelle vuote.
Max Nanasy,

12

Ci sono tre fattori al lavoro qui, "beta geek media", "il momento è giusto" e "segui il leader"

Beta Geek Media

Esistono numerosi canali che discutono di "attività geek". Avrebbero certamente coperto l'aspetto di un nuovo sistema di controllo della versione, ma copriranno di più git. Perché? Perché Linus Torvalds lo scrisse inizialmente, ne discusse pubblicamente e lo usò come soluzione al suo problema ben pubblicizzato con Bitkeeper. In effetti, ogni volta che c'è una guerra alla fiamma su lkml, i media beta geek scriveranno un articolo al riguardo. La discussione Git è iniziata su lkml, quindi ha ottenuto una copertura maggiore rispetto ad altre alternative. E i fanatici della beta che leggono slashdot come se fosse Variety lo mangiarono. Il risultato finale è che git ha dieci volte più articoli di mercurial.

Il momento è giusto

I grandi progetti open source con molti collaboratori hanno problemi con il controllo centralizzato del codice sorgente. Man mano che l'open source cresce e i progetti hanno maggiori probabilità di avere molti collaboratori, il problema peggiora. Linux è probabilmente il progetto più noto che soffre di questo, ma ce ne sono molti altri. Con molti progetti che raggiungono questo punto, era necessario un qualche tipo di VCS avanzato. Git, Mercurial e Bazaar sono stati i grandi vincitori qui. Arch e Monotone erano solo un po 'troppo presto e perse l'ondata di hype.

Segui il leader

I grandi progetti hanno follower che controllano e costruiscono il codice regolarmente, anche se non contribuiscono. I follower acquisiscono familiarità con gli strumenti necessari per recuperare il progetto che seguono, in modo che tali strumenti ne traggano maggiore utilità. Diamo un'occhiata ai progetti "big draw" per i tre grandi DVCS:

  • Git : Linux, Perl, jQuery, Ruby on Rails, Eclipse, Gnome, KDE, QT, X
  • Mercuriale : Java, Mozilla, Python
  • Bazar : Ubuntu, Emacs

Git ha più progetti "big draw" che lo utilizzano, quindi più persone hanno familiarità con Git, ci sono più tutorial git scritti.


1
Potresti avere ragione, ma la tua lista "big draw" è un po 'fuorviante / di parte. Guardando il sito di Bazaar, elencano alcuni altri importanti progetti: MySQL, Bugzilla, Debian, GNU sembrano tutti abbastanza noti. L'elenco Hg è anche un po 'più grande.
jalf

@jalf: tale elenco deve essere soggettivo. Ho compilato il mio Linux e Gnome, ma mai Mozilla o Emacs. Altri possono essere esattamente il contrario. La domanda è davvero "quante persone estrarranno questo progetto dal controllo del codice sorgente"? Ho elencato quelli che mi sembrano più probabili per ispirare le persone a installare un vcs per estrarre la fonte attuale.
Sean McMillan,

Giusto. Ho pensato che si trattasse di un tentativo di un elenco di obiettivi (dopo tutto, gli elenchi di quali grandi progetti utilizzano ciascun sistema DVCS dovrebbero essere abbastanza facili da rintracciare) :)
jalf

12

È principalmente solo un hype auto-rinforzante. Git è il più popolare, quindi ottiene più pubblicità, il che lo rende più popolare.

Git, Hg e Bzr sono tutti ottimi sistemi DVCS, ma un numero spaventoso di persone identifica DVCS con Git e pensa che tutte le adorabili funzionalità di un DVCS siano uniche di Git. E così usano Git, raccomandano Git e dicono cose come "Git è meglio perché può fare le fusioni di polpo" (Così può Bazaar), o "Git è meglio perché è distribuito" (così è qualsiasi DVCS, da cui il nome ) o "Git è meglio perché semplifica la ramificazione e l'unione" (di nuovo, questo vale per ogni DVCS).

Purtroppo, perché ritengo che anche le alternative abbiano molto da offrire e preferirei che le persone scegliessero Git per i suoi punti di forza unici, piuttosto che semplicemente perché pensano DVCS == Git.

Quando qualcuno scopre quanto siano intelligenti i DVCS, indicando uno specifico DVCS, spesso non vanno e dicono agli altri "ehi, i DVCS sono fantastici, dovresti usarli", ma piuttosto "il DVCS che io imparato da DVCS è fantastico, dovresti usarlo ".


11

Github. Github è un pioniere nella programmazione sociale. Ha trasformato il controllo delle versioni in una piattaforma social che ha attirato molta attenzione e ovviamente supporta solo Git. Social media = maggiore adozione. Bitbucket sta guadagnando slancio anche se sta ottenendo molte nuove funzionalità, rendendolo un probabile rivale :)


7

Beh, in effetti penso che l'hype riguardi tutti i DSVC insieme.

Ma i sostenitori di Git sono solo più vocali, spesso più aggressivi nei loro commenti per essere onesti e amano parlarne ovunque.

Ho il sospetto che Mercurial sia ampiamente usato, certamente tanto quanto git, forse di più (Microsoft e altre grandi aziende lo usano ora), ma le persone che usano Mercurial il più delle volte volevano solo un DSVC che possono afferrare rapidamente, non qualcosa su cui basare una religione. Quindi sono meno vocali e più reattivi nelle discussioni che proattivi come alcuni utenti git.

Bazaar non è molto discusso di certo perché solo pochi grandi progetti noti lo usano e nessun'altra grande azienda oltre a Canonical è nota per usarlo. Confronta ad esempio Google (git, mercurial, svn) e grandi progetti open-source e puoi vedere perché non ne parla davvero. Fossil è un altro che è interessante per una nicchia di sviluppatori, quindi immagino che sia normale e corretto per loro essere ascoltati solo da coloro che cercano le funzionalità che forniscono (come wiki incorporato, tracciamento dei problemi e forum).

Detto questo, penso che stiamo lentamente calando il ciclo dell'hype e molti sviluppatori che hanno utilizzato diverse soluzioni possono iniziare a vedere quale si adatta alle loro esigenze.

Inoltre, Google Code Hosting e SourceForge ora consentono sia git che mercurial, quindi sta diventando più una scelta specifica del progetto rispetto a prima quando hai scelto git a causa delle funzionalità di GitHub.

Non esiste una vera guerra, solo un'interessante varietà di strumenti.


Vorrei che l'hype riguardasse i DVCS in generale, ma da tutto ciò che ho visto, l'hype riguarda Git, e la maggior parte delle persone pensa che DVCS e Git siano sostanzialmente la stessa cosa.
jalf

6

So che ci sono già molte risposte a questa domanda, ma ho sentito di poter aggiungere un po 'più di prospettiva.

Ho usato Bazaar praticamente da quando è stato creato per varie cose. La cosa più grande per cui l'ho usato è stato il progetto AllTray, per il quale sono (attualmente) l'unico sviluppatore e manutentore. Il bazar è carino. Funziona, resta fuori dai piedi e quasi mai devo guardare una pagina --help o la pagina man per questo. Detto questo, ci sono alcuni aspetti negativi:

  1. Molte funzionalità che possibilmente dovrebbero essere parte del core VCS non lo sono. Cose come la capacità di eseguire una sezione di storia, di eseguire lunghi output attraverso un cercapersone o di avere rami "colocati" (ad esempio, repository in stile git) vengono forniti come plug-in.
  2. Molti plugin non sono poi così stabili. Ad esempio, la funzionalità dei rami associati non sembra funzionare bene sul lato server (almeno, non l'ho mai fatto funzionare, tende a sbagliare dicendo che il ramo in un determinato percorso non esiste quando è proprio lì di fronte a te e puoi vedere la cosa insanguinata).
  3. Non ha operazioni di "clonazione", i rami si tirano uno alla volta. Devi fare un lavoro extra se vuoi avere un repository in modo da poter estrarre in modo efficiente nuovi rami.
  4. Per alcuni progetti, è dolorosamente lento. Prova "bzr branch lp: mysql" qualche volta.
  5. Manca un forte supporto per i ganci; puoi scrivere plugin bzr che forniscono hook, ma non esiste un modo standard per avere script hook arbitrari sul lato server.

Di recente sono passato a git per lo sviluppo di AllTray e sto prendendo molto rapidamente in considerazione l'idea di migrare tutti i miei progetti su git. C'è un po 'più di tempo in anticipo speso per conoscere le corde, ma sembra valerne la pena. Alcune cose che ho notato:

  1. git clone è un'operazione relativamente veloce e ti fornisce informazioni su tutti i rami esistenti nel repository che hai clonato.
  2. L'aggiunta di ulteriori repository remoti è indolore, quindi è possibile tenere traccia di molti repository diversi che hanno più rami se lo si desidera.
  3. Il libro Pro Git è disponibile online e in più formati, incluso per i dispositivi di lettura di eBook, e non è una lettura difficile.
  4. git sembra molto più facile da estendere di Bazaar e non è necessario utilizzare alcuna API particolare per farlo. (NB: questo è sia un lato positivo che uno negativo).
  5. git ha la bisection integrata e non posso sottolineare abbastanza l'utilità di quella funzione.
  6. GitHub è piuttosto carino.
  7. Anche il gitosissistema è abbastanza carino. Non sono nemmeno sicuro di come implementarlo se non come un plugin in Bazaar, e non riesco a immaginare che sarebbe altrettanto efficiente.

Per farla breve: ho usato bzr per molto tempo, ma Git mi sta rapidamente dimostrando la sua bellezza.


5

Usando git, tendi a rimanere sempre nella stessa directory locale quando fai lo sviluppo, e semplicemente git checkout branchnameper passare da un ramo all'altro (io uso sempre rami "leggeri", quindi questa è una caratteristica molto importante per me).

Guardando la documentazione e le esercitazioni di Mercurial, sembra che il modo preferito per gestire i diversi rami dello sviluppo sia creare nuovi repository mediante la clonazione. Questo tutorial è un esempio.

Credo che tu possa fare la stessa cosa in Mercurial come in git, ma per qualche ragione la documentazione di Mercurial (che ho letto) mostra quasi sempre ramificazioni creando un clone del repository.

(Uso git quotidianamente. Ho poca esperienza con mercurial, ci ho giocato e seguito alcuni tutorial)


2
Ho usato sempre rami "nominati" in hg. Li supporta bene. hg branch foo, poi hg up foopiù tardi ... Clone-for-branch ha alcuni forti punti deboli per lo sviluppo ordinario.
Paul Nathan,

Hmm, quindi stai dicendo che Git è meglio di Hg perché mentre Hg supporta la funzione che ti interessa, la comunità Hg considera un approccio alternativo superiore?
jalf

1
1: Mi chiedo: perché l'attenzione al "ramo per clonazione" nella documentazione di Hg (vedi ad esempio hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html e mercurial.selenic. com / guida )? Per me, sembra disordinato avere un repository per ramo. 2: Non sto dicendo che Git sia migliore, la mia risposta è più di un'osservazione su una questione che per me (un novizio Hg) sembra una differenza tra i due. La differenza sembra essere più culturale che tecnica, dal momento che Hg supporta anche "branch all'interno dello stesso repository".
codeape,

3
Mercurial soffre di molte informazioni obsolete online; molto è stato propagandato da persone che usano git e non si sono aggiornate sulle caratteristiche di mercurial mentre si evolveva. La maggior parte dei vecchi motivi per preferire i repository clonati non si applica più nelle versioni moderne di mercurial (i rami con nome possono essere chiusi ora, e c'è un sistema di segnalibri che ti dà un modello di utilizzo simile ai git branch se vuoi).
Stephen M. Redd,

4

Non so quanti di questi rant ho visto nelle ultime settimane, ma tutti sembrano considerarlo come un fatto che Mercurial e / o Bazaar sono oggettivamente migliori di Git. L'usabilità sembra essere un tema comune. Sì, imparare Git è stato sorprendentemente difficile dopo aver usato CVS e Subversion, ma a questo punto non vorrei scambiarlo con nessun altro VCS a meno che non costituisse un altro cambio di paradigma . E indicare una tabella di funzioni non mi dirà molto su quanto sia flessibile, estensibile, sicuro o senza sforzo . Ad esempio, per impostazione predefinita git-diff utilizza i colori e un cercapersone. Certo che posso ottenere lo stesso con diff ... | colordiff | less -Ro qualcosa del genere, ma dovrebbe essere ovvio il motivo per cui uno è superiore all'altro.


Non penso che l'argomentazione sia che dovresti quindi passare - ovviamente usare lo strumento che già conosci è più semplice che passare a un altro, non importa quanto sia facile l'altro. Non credo che nessun sostenitore del DVCS possa davvero affermare che stai perdendo un'enorme quantità essendo su git invece di Bazaar o Mercurial, non c'è molto tra loro.
ZoFreX,

3

Ad essere onesti, penso che i sostenitori git vs. mercurial siano pochi e lontani tra loro rispetto ai sostenitori git vs. centralizzati. Tuttavia, i motivi sono facili da riassumere:

Git è il controllo della versione per programmatori. Mercurial è il controllo della versione per le imprese. La centralizzazione fu un primo tentativo adeguato di inventare il controllo delle versioni, soprattutto considerando che era stato progettato prima della rivoluzione del personal computer.

Quello che intendo per controllo di versione per programmatori è che i programmatori in generale favoriscono la flessibilità rispetto alla facilità di apprendimento. Dopotutto, siamo disposti a dedicare anni all'apprendimento delle lingue esoteriche per avere la flessibilità di far fare ai computer ciò che i non addestrati non possono fare. Git offre ai programmatori la flessibilità di usarlo come preferiscono, a spese di esso impiegando più tempo per imparare a usare quella flessibilità in sicurezza. Permette di mettere in atto restrizioni per far rispettare le politiche, ma non esce così fuori dalla scatola. Nota ho detto facilità di apprendimento piuttosto che facilità d' uso . Una volta appreso, git è facile da usare come qualsiasi altro VCS e spesso più facile a causa della maggiore velocità e funzionalità.

Alcuni programmatori imparano abbastanza per fare ciò che vogliono, quindi resistono all'apprendimento di nuovi modi per farlo. Le aziende assumono e assumono molte di queste persone, quindi desiderano che qualsiasi cambiamento negli strumenti che usano abbia un certo grado di familiarità. Le aziende vogliono anche che i loro programmatori abbiano abbastanza flessibilità per fare il loro lavoro, ma non tanto da rendere difficile la formazione o la migrazione iniziale. È qui che si inserisce Mercurial. Ha la maggior parte del potere di Git, ma un percorso di migrazione un po 'più semplice.

Non penso sia giusto dire che git è popolare solo per l'hype o l'approvazione di Linus. Ciò probabilmente spiega molte persone che lo provano , ma si attaccano e lo promuovono perché funziona bene per loro, puro e semplice.




1

Recentemente stavo cercando un sistema di controllo della versione per progetti personali, quindi ho appena provato un sacco di loro. Sono praticamente analfabeta sulla riga di comando e avevo sentito che sebbene le GUI fossero disponibili, Git era davvero destinato a essere utilizzato attraverso la riga di comando, il che mi ha reso un po 'titubante. Onestamente, è stato ridicolmente facile da prendere, e mi sto davvero divertendo. La documentazione è un fattore determinante per l'adozione di una nuova tecnologia e Git ha tonnellate di documentazione ridicolmente semplice, chiara e disponibile. Le altre alternative come SVN e Bazaar erano fantastiche, ma non lo rendevano abbastanza facile come Git. Anche Github è un grande fattore, poiché al momento è diventato così centrale nel movimento open source. Avere una posizione (ironicamente) centralizzata per scambiare codice e progetti è un punto di svolta in sé.


1

Solo il mio 2 ¢ - Ho scelto git rispetto alle alternative perché è scritto in C piuttosto che in una lingua radtool o in un linguaggio di alto livello eccessivamente accademico. I vantaggi sono che è veloce ed efficiente e che posso effettivamente RTFS se incontro bug o comportamenti che non posso spiegare. Inoltre, è possibile utilizzare su piccoli ambienti di sviluppo self-hosted che non includono interpreti / runtime giganteschi, il che significa che posso estrarre direttamente da un repository git e compilare su tali sistemi piuttosto che dover recuperare l'ultima fonte altrove e rsync.


1
Questo è stato anche il motivo per cui ho scelto git, perché è scritto in un linguaggio compilato anziché python, e per questo motivo posso semplicemente avere una versione portatile di git nella mia penna USB insieme ad altri strumenti.
Coyote21,

Eppure, questo è precisamente il motivo per cui Facebook ha scelto di utilizzare invece mercurial: non erano contenti delle prestazioni di nessuno dei due, ma hanno trovato più facile migliorare le prestazioni del mercurial (che, per la maggior parte delle operazioni, era solo una piccola percentuale più lenta rispetto a git nel complesso) da un margine significativo (che hanno fatto integrandolo con un servizio di monitoraggio dei file in modo che potesse dire cosa poteva e non poteva essere cambiato, vedi i dettagli qui ) a causa del fatto che Python era più facile da lavorare rispetto a C.
Jules,

1

Potresti essere interessato a leggere perché il progetto desktop GNOME ha scelto git su hg e bzr, quando ha deciso di passare da svn qualche anno fa. Ci sono state molte discussioni religiose accese lungo la strada, ma questa pagina Wiki di GNOME riassume bene i pro ei contro mentre si applicavano a quella particolare comunità.


0

Per non parlare del fatto che Apple ora si è impegnata a spingerlo nella comunità dell'obiettivo c, se di recente hai creato una nuova applicazione in Xcode 4, avrai notato che ti chiede automaticamente se desideri effettuare un repository Git.

Concesso Xcode 4 è in circolazione da pochi mesi e non influisce sul successo precedente di Gits, ma sappiamo tutti quanto Apple possa fare cose in poco tempo.


-1

Attualmente sto passando da hg (forno) a git (github). Ho usato il forno per circa un anno in questo momento. Per me hg non ha svantaggi. Posso fare tutto ciò che devo. Quindi è fantastico.

Perché sto usando adesso?

Ci sono solo tre ragioni in questo momento.

  1. gitHub offre contenuti fantastici
  2. gitHub offre grandi funzionalità social
  3. Durante le presentazioni e i seminari degli sviluppatori ho sempre pubblicato i miei campioni su hg e git. Su git ho circa 10 volte più visitatori che su hg !!

Penso che il terzo sia il più importante.

Thorsten


-2

Pura fortuna immagino, fino ad ora quasi impossibile dimostrare perché qualcosa ha funzionato e altri no. Linus può costruire qualcos'altro di spettacolare e non avere successo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.