La mia squadra presso il mio precedente datore di lavoro ha utilizzato Git e ha funzionato bene per noi. Noi non erano tutto ciò che di grandi dimensioni (forse 16 o giù di lì, con forse 8 committer realmente attivi?), Ma non ho risposte alle tue domande: unioni
- N-Way non sono terribilmente comune. Abbiamo elaborato alcune convenzioni sulla denominazione delle filiali che ci hanno consentito di scrivere script che facilitavano il processo di "release engineering" (uso citazioni di paura perché non avevamo un tecnico di rilascio) e le persone creavano rami di funzionalità private, ma raramente ha avuto un problema con la fusione di più di due rami (vedi il prossimo).
- (e # 3).Abbiamo avuto un repository centrale su un server di sviluppo per tre motivi: (a) La macchina di sviluppo aveva un backup RAID5 (più tollerante ai guasti) e notturni (le workstation di sviluppo non erano notturne), (b) le versioni di produzione erano state create sul server di sviluppo, e (c) avere uno script semplificato di repository centrale. Di conseguenza, la fusione N-way semplicemente non è mai avvenuta. La cosa più simile a N-way era quando qualcuno si fondeva lateralmente e si univa verticalmente.
Git per noi è stata una grande opportunità per il suo alto grado di flessibilità; tuttavia, abbiamo dovuto stabilire alcune convenzioni (nomi di branch e tag, posizioni dei repository, script, ecc.) o potrebbe essere stato un po 'caotico. Una volta che abbiamo stabilito le convenzioni, la flessibilità che avevamo era semplicemente fantastica.
Aggiornamento: le nostre convenzioni in fondo erano dunque:
- una directory sul nostro server NFS che ospitava tutti i repository centrali
- abbiamo avuto diversi progetti che i componenti condivisi, così li abbiamo scoppiata in librerie, in sostanza, con i propri repository, ei progetti deliverable li hanno appena inclusi come sottomoduli git.
- c'erano stringhe di versione e rilasciare nomi imposti su di noi dall'alto, quindi abbiamo usato un varianti di essi, come nomi di filiali
- allo stesso modo, per i tag, hanno seguito i nomi di rilascio al processo dettata
- progetti consegnabili contenuti un file di proprietà che ho letto negli script della shell, e che mi ha permesso di scrivere un singolo script per gestire il processo di rilascio per tutti i progetti, anche se ognuno aveva delle leggere variazioni sul processo - le variazioni erano spiegate in quei file di proprietà
- Ho scritto script per ricostruire un pacchetto disponibile da qualsiasi tag
- utilizzando git al ci ha spinto a controllare l'accesso usando PAM e/o le normali autorizzazioni utente (ssh, ecc.)
- C'erano altre convenzioni che sono più difficili da inserire in un elenco puntato, come quando devono avvenire le unioni. Davvero, io e un altro ragazzo eravamo dei "guru guru" interni, e abbiamo aiutato tutti a capire come usare i rami e quando unire.
- convincere le persone a impegnarsi in piccoli pezzi e non far cadere le bombe a diff nel ramo principale era una sfida. Un tizio ha abbandonato circa due settimane di lavoro in un unico impegno, e alla fine abbiamo dovuto sbrogliare tutto. A enorme sprecare tempo e frustrante per tutti.
- commenti informativi e dettagliati per andare con impegna
C'erano altre cose che si impara come la tua squadra ottiene con esperienza e impara a lavorare con l'altro, ma questo era sufficiente per noi iniziato.
Aggiornamento: chi segue queste cose ormai già lo sa, ma Vincent Dreissen ha scritto un solido e abbastanza completa (ma non esaustivo) take on branching and release engineering using Git. Altamente incoraggiare usando il suo processo come punto di partenza, perché per due motivi:
- un sacco di squadre di farlo in questo modo o stanno utilizzando alcuni variante simile (compreso Linux, Git, e molti altri team di progetto OSS), che significa che questo metodo è stato testato e ottimizzato per avere successo nella maggior parte delle circostanze. È molto improbabile che affronti un problema che non è stato affrontato e risolto nei limiti di questo modello.
- a causa di quanto sopra, quasi tutti gli ingegneri con esperienza Git capiranno cosa sta succedendo. Non dovrai scrivere una documentazione dettagliata sulla natura fondamentale della tua procedura di rilascio; dovrai solo documentare cose specifiche solo per il tuo progetto o team.
fonte
2009-04-25 04:23:23
Spero non sia vicino in fretta, penso che sia davvero una buona domanda.Sfortunatamente non sono qualificato per rispondere - uso solo git su progetti personali, dato che il lavoro è piuttosto in ritardo, utilizzando ancora CVS per alcuni progetti e svn per altri. Per la maggior parte, sembra che le persone che usano svn pensano di essere "moderni". :-) – Benson
Penso che troverai molti posti di lavoro (come il mio) dove la vera risposta a questa domanda è "in privato" o "senza la conoscenza del resto del team". –
Purtroppo sembra che la risposta migliore sia stata davvero per una piccola squadra. C'è qualcuno che fa questo con i team negli anni '50 - 100+? –