Qual è la dimensione tipica del team con un repo Git?

3

Abbiamo utilizzato Git come controllo della versione, ma con la crescita del team, ci sono sempre più dolori quando si tratta di trasferire tutte le nostre modifiche su un singolo ramo per una distribuzione.

Mi chiedo se forse stiamo superando Git come strumento di collaborazione efficace. So che ci sono grandi progetti OSS con molti sviluppatori che usano Git ma ci sono anche alcuni gatekeeper responsabili della fusione dei rami nel ramo finale di build / deployment.

In un ambiente di ufficio, in cui gli sviluppatori sono relativamente indipendenti e si può fidare di unire le proprie modifiche, quante persone possono effettivamente collaborare su Git?

Inoltre, ci sono suggerimenti per un uso efficace di Git? Abbiamo utilizzato il flusso di lavoro di rebase, non sono del tutto convinto che passare a un flusso di lavoro basato sull'unione possa migliorare la situazione, ma poi non ho visto una descrizione formale di come un grande gruppo avrebbe lavorato insieme in un flusso di lavoro di unione (It sembra che la storia si trasformerebbe in un inferno di fusione).

Addendum:

In modo che sia facile da trovare per chiunque altro si chieda:

  • Stiamo utilizzando un ramo delle funzionalità strategia
  • Il codice base è ben organizzato e abbastanza pulito. È Python (con alcuni HTML / JS), MVC via piramide per l'app web, pacchetto separato (diversa cartella di primo livello nello stesso repository, esso stesso suddiviso in livelli ben definiti) per una grande porzione della funzionalità dell'applicazione non web specifica.
  • Proviamo dolore per quanto riguarda il codice di unione perché gli sviluppatori apportano spesso modifiche negli stessi file, ad esempio, uno sviluppatore possiede un'autenticazione, quindi toccano le visualizzazioni, ecc ... relative all'autent, ma un altro dev sta gestendo internazionalizzazione, quindi stanno toccando tutte le visualizzazioni, ecc.
posta Endophage 30.05.2013 - 22:59
fonte

1 risposta

2

Bene, git è in grado di gestire il kernel di Linux, giusto? Vale la pena dare un'occhiata al numero di patch, rami, contributori ....

Sulla base di ciò, non penso che ci sia un limite di dimensioni. Inoltre dubito che al giorno d'oggi esista un sistema di controllo del codice sorgente migliore, quindi anche se lo fosse, niente da passare a.

Comunque mi sento per i tuoi problemi, quelli sono sicuramente reali. Hai bisogno di organizzazione del progetto. Hai bisogno di regole per il check-in, politiche del codice, politica di ramificazione, cultura e molte altre cose correlate al lavoro di squadra per ottenere buoni risultati. git è semplicemente un database con funzionalità utili per archiviare e manipolare fonti e cronologia. Non ha mai fatto finta di essere un "sistema" o un sostituto per uno. O uno strumento di collaborazione generale .

Per la collaborazione non faccia a faccia ci sono in realtà buoni strumenti di integrazione come bugzilla, wiki, pianificatori di progetti. Usiamo FogBugz con Kiln - quest'ultimo ha appena imparato git, e consente di ottimizzare molti flussi di lavoro relativi all'assegnazione di compiti, verifiche e soprattutto recensioni. Devi assemblare un sistema del genere. E certamente mantenere le interazioni delle persone reali e un ambiente di apprendimento.

Per la gestione della cronologia git, sì, suggerisco anche di effettuare il rebasing per la maggior parte delle volte, in particolare le patch singole. Ma usa le fusioni di ramo, anche in cima con --no-ff se per un singolo argomento. Prima dell'integrazione per diventare master, il codice viene revisionato e consolidato (ridefinendo il self) per combinare correzioni e lavori di post-revisione. Non aver paura di aggiustare il maestro se va fuori forma.

Per evitare problemi relativi a "upbasebase", la mia regola è creare un ramo amend_NN sul vecchio e fixed_NN sul nuovo stato con numeri corrispondenti, in modo che chiunque possa facilmente scoprire che il suo lavoro deve essere ridefinito ed evitare di far risorgere cose abbandonate.

La politica di ramificazione deve essere basata sull'approccio generale di lavoro e rilascio. Conservo un singolo master ma puoi trovare schemi più elaborati che hanno un master di sviluppo separato.

NOTA: Con "bugzilla" intendevo il genere tracker in generale e non il particolare prodotto direttamente, nel processo decisionale ho ricevuto un grande aiuto da tracker confronta wiki . OTOH Ho un'esperienza positiva con Bugzilla stesso anche da posti precedenti.

    
risposta data 31.05.2013 - 01:06
fonte

Leggi altre domande sui tag