Sfondo rapido: siamo una piccola agenzia web (3-6 sviluppatori in qualsiasi momento) che sviluppa siti Symfony 1.4 di piccole e medie dimensioni. Abbiamo usato git per un anno, ma in precedenza abbiamo usato Subversion.
Negli ultimi 6 mesi abbiamo impiegato molto tempo per lo sviluppo in un plugin Symfony centrale che alimenta il nostro CMS personalizzato. Questo plugin include una serie di funzioni, helper, classi base ecc. Che utilizziamo per creare funzionalità personalizzate. Questo plugin è memorizzato in git, ma si ramifica selvaggiamente in quanto il plug-in viene utilizzato in vari prodotti e viene continuamente spostato da / premuto. Il repository viene solitamente utilizzato come sottomodulo all'interno di un grande progetto.
I problemi che stiamo iniziando a vedere ora sono un gran numero di conflitti di unione e modifiche incompatibili all'indietro introdotte nel repository dagli sviluppatori che aggiungono funzionalità personalizzate nel contesto del loro progetto.
Ho letto l'eccellente modello di branching git di Vincent Driessen e l'ho usato con successo per i progetti in passato, ma non sembra applicarsi bene alla nostra situazione particolare; abbiamo un certo numero di progetti che utilizzano contemporaneamente lo stesso plug-in core mentre sviluppano nuove funzionalità per questo.
Ciò di cui abbiamo bisogno è una strategia che fornisca le seguenti informazioni:
- Una metodologia per lo sviluppo di funzionalità importanti all'interno del repository di codice.
- Un modo per migrare tali funzionalità in altri progetti.
- Un modo di versionare il repository principale e di tracciare la versione di ogni progetto principale.
- Un piano per la migrazione delle correzioni dei bug a versioni precedenti.
- Una cronologia più chiara che è più facile da vedere da dove provengono i cambiamenti.
Qualsiasi suggerimento o discussione sarebbe molto apprezzato.