2009-06-18 4 views

risposta

22

Suppongo che anche leggere Bazaar vs. Git articolo, ma alla fine, tutto si riduce a quello che si stai cercando in termini di "gestione del codice ricco di funzionalità" .

  • Se, per la gestione del codice, si fa riferimento al file di (e le directory e la ridenominazione), andare con Bazaar.

  • Se, per la gestione del codice, si sta guardando contenuti gestione, Git è stato progettato per gestire proprio questo (l'area di sosta, per esempio, consente di registrare ciò che contenuto corrente si vuole impegnare, anche se si hanno già cominciato a fare un po 'di grandi dimensioni modifica si finisce per non voler impegnarsi nel ramo corrente)

a dire il vero, rileggere Linus's original vision per Git (di nuovo nel mese di aprile 2005). Se sei d'accordo, probabilmente Git ti consegnerà quello che vuoi. In breve:

  • modello molto semplice (blob-albero-commit-tag)
  • senza metadati aggiunti (per il monitoraggio rinominare ad esempio)
  • "forti" principi come:
    • i "file" non contano. L'unica cosa che conta è il modo in cui il "contenuto" si sposta nell'albero
    • Hai un SCM che tiene traccia di ciò che è cambiato nell'unico livello che conta davvero, e cioè l'intero progetto. Nessuna delle informazioni in realtà non ha alcun senso a tutti in una granularità più piccolo, dal momento che, per definizione, un "progetto" dipende dalle altre file, altrimenti non sarebbe un progetto

Che " ogni nozione progetto" è in realtà un punto di forza di un a limit per Git in termini di gestione del progetto: non si dovrebbe cercare di mettere tutto in repository Git uno.

+4

Non so esattamente cosa intendi per "file" rispetto a "contenuto". Bazaar ti consente già di selezionare i file che vuoi convertire in un ramo, quindi non vedo cosa si ottiene disponendo di un'area di gestione temporanea. Non vedo come * non * vuoi che le informazioni sui file vengano tracciate. Ad esempio, in Java, è davvero necessario assicurarsi che tutti i file abbiano il nome giusto, ma è comunque importante indipendentemente dal progetto. Quando penso alla gestione del "file", penso al sourcesafe e al versioning per-file di cvs - che bazar non è decisamente. – FryGuy

+1

@FryGuy: questa risposta potrebbe essere un po 'più esplicita: http://stackoverflow.com/questions/995636/popularity-of-git-mercurial-bazaar-vs-which-to-recommend/995799#995799 – VonC

+0

@ FryGuy: git in grado di rilevare le modifiche tra i file. Ad esempio, supponiamo di avere un file con due funzioni e dividerlo in due funzioni. Non puoi semplicemente tracciare questo usando la rinomina. Git e il suo rilevamento di rinomina può farlo, e funziona molto bene secondo me (ma è lento - molto lento rispetto ad altre operazioni git, può richiedere fino a 10-15 secondi per file di grandi dimensioni). Ho un esempio qui: http://cournape.wordpress.com/2009/05/12/why-people-should-stop-talking-about-git-speed/ Per me, questo + rami economici sono i due caratteristiche killer di git rispetto ad altri strumenti. –

12

Si tratta di preferenze personali, chiare e semplici.

Io uso Bazaar e lo trovo estremamente facile. La scenografia è un concetto in Git offre una certa flessibilità ma aggiunge anche complessità. Puoi tranquillamente gestire il codice in Bazaar con qualcosa come 4 comandi (aggiungi, commit, unisci (magari push/pull) e log o qlog), e hai solo bisogno di unire se vuoi più rami.

Di solito il Bazar sembra fare la cosa giusta. Non ho mai avuto problemi a farlo facendo qualcosa di stupido o lasciandomi fare qualcosa di stupido.

9

Penso che dipenda dal vostro gusto personale - ci sono argomenti per entrambi. Ho usato bzr estensivamente per progetti personali per un paio d'anni, dagli 0,8 giorni, ma sono passato a git l'anno scorso, e non ho mai guardato indietro, almeno per la gestione del codice sorgente.

io sono troppo pigro per riscrivere la mia impression, ma per riassumere:

  • bzr funziona in modo più coerente tra le piattaforme
  • bzr è più rilevabile (se si è data lo strumento wo tutta la documentazione, qualsiasi utente semi-competente sarà in grado di usare bzr, non è così vero con git)
  • bzr è più facile da estendere in un modo API, git è più facile estendere in un modo unix (pipe)
  • git è immensamente IMHO più potente; in particolare, sono convinto che il loro approccio per la gestione dei nomi e il monitoraggio dei contenuti sia quello giusto per molti casi
  • il sistema bzr revno non è buono IMHO. Sembra più semplice, ma è profondamente confuso quando si inizia ad avere molti rami e cambiare la linea principale.
1

L'unica cosa che Git fa molto, molto meglio è gestire molti rami. Lo fa molto più veloce di bzr e non richiede più copie del codice sorgente. Tutti i rami si trovano nella stessa directory. Mi trovo a utilizzare git branches molto più spesso di quello che usavo con bzr, specialmente perché il mio repository non è piccolo e coinvolge anche file binari (totale 180 MB).

MODIFICA: In realtà, ho sbagliato. --no-trees + checkout leggero funziona come Git. Grazie, FryGuy. Oh, e ho trovato this blog entry che ha informazioni utili.

+0

È possibile ottenere lo stesso flusso di lavoro in bazaar. Questa è una delle caratteristiche che mi piace, in quanto puoi utilizzare qualsiasi flusso di lavoro che desideri, piuttosto che il "modo giusto" di fare le cose. Vedi i rami --no-tree e - checkout lightweight e 'bzr switch' tra i rami (come cartelle sul tuo disco). – FryGuy

+0

Avrai ancora più copie del codice sorgente, una per ogni ramo, quindi, è lo stesso flusso di lavoro, ma non lo stesso approccio. Ad ogni modo, quando usi bzr, dovresti usare rami accatastati, è meglio dei controlli leggeri. –

+5

No, non si avranno più copie del codice sorgente. Questo è ciò che fa "no-trees". Ho oltre 70 filiali sul mio progetto attuale e solo una copia del codice sorgente sul mio disco rigido (almeno nel bazar, ho alcune altre istantanee prima di iniziare a usare il bazar). La mia cartella .bzr è ~ 190 meg, e il mio albero dei sorgenti è 1.76gigs, quindi noterei se ci fosse più volte. – FryGuy

1

Bazaar è molto ben integrato con Ubuntu, sto usando Ubuntu da molti anni ormai, stanco di passare ad altre distro più geek, ma non ha senso. Scelgo il bazar su git/mercurial coz bazaar: le notifiche sono molto ben integrate in Ubuntu. Inoltre, riceverai hosting gratuito da Launchpad, un vantaggio enorme.

+0

Non è un vantaggio in quanto puoi anche ottenere Git hosting gratuito da GitHub e altri. –

7

Lo sviluppo del Bazar è cessato. L'ultima versione è 2.6, datata 2013-08-04. Ci sono stati less than 20 commits since then a partire da aprile 2015.

Se stai iniziando con il controllo di versione, dovresti considerarne uno attivo (molto probabilmente questo sarà Git o Mercurial).

Modifica 1: è stata rilasciata una versione 2.7 dal mio post, ma non cambia il fatto che il progetto è essenzialmente morto con ~ 10 commit/anno.

Modifica 2: ora c'è una bazaar chiamata Breezy con più attività di Bazaar. Dubito che questo diventerà un progetto molto attivo, ma almeno questo significa che lo strumento è mantenuto (dovrebbe sopravvivere alla fine di Python 2 per esempio, uno degli obiettivi di Breezy di portarlo su Python 3).

+0

Sembra che si stia sviluppando di nuovo http://doc.bazaar.canonical.com/beta/en/whats-new/whats-new-in-2.7.html – skan

+0

Il link che punti ai discorsi sull'ultima versione, 1 anno fa. Ci sono stati [3 commit nel 2017 e nessun impegno nel 2018 ancora] (http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/changes/). Non chiamerei questa manutenzione attiva ;-). Briozy OTOH sembra ragionevolmente attivo (non un'attività paragonabile a hg o git, però). –

1

Il motivo migliore per utilizzare git vs bzr/hg è perché github rocks. Launchpad è OK, ma Github ottiene correttamente ricerca, social e stile.

Tecnicamente il launchpad è probabilmente migliore in molti modi. Le fusioni, i sistemi di build integrati e altre funzionalità rendono il launchpad attraente per molti. L'editor integrato su github, gli elenchi ... c'è un flusso lì che il launchpad non ha. Visivamente, socialmente, non c'è competizione.