Sto cercando le funzionalità Git e Bazaar e mi chiedo quale sia la gestione del codice più ricca di funzionalità?È più facile gestire il codice con Git o Bazaar?
risposta
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.
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.
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.
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.
È 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
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. –
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
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.
Non è un vantaggio in quanto puoi anche ottenere Git hosting gratuito da GitHub e altri. –
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).
Sembra che si stia sviluppando di nuovo http://doc.bazaar.canonical.com/beta/en/whats-new/whats-new-in-2.7.html – skan
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ò). –
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.
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
@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
@ 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. –