Lavoro in un piccolo team con un massimo di 5 sviluppatori (web). Poiché il nostro team cresce frequentemente e abbiamo riscontrato problemi con più persone che lavorano sullo stesso codice, abbiamo deciso di configurare un VCS.
Situazione attuale
Attualmente stiamo lavorando con un server di sviluppo centrale (LAMP). Quindi ogni sviluppatore lavora sulla stessa base di codice e se il codice è testato e pronto per il nostro server live lo copiamo semplicemente via ftp. So che si tratta di una sorta di flusso di lavoro 1600 anno, ma sì - è quello che è e anche la ragione per questa domanda.
Sul server di sviluppo la nostra struttura di directory assomiglia a questa:
/var/www
/Project1
/Project2
/Project3
...
Inoltre ci sono alcune piccole applicazioni non web - app per Android / iPhone / Windows 8, ecc. e alcuni strumenti C # che dovrebbero essere inclusi nel VCS.
Obiettivo e problemi
Il nostro obiettivo è quello di ottenere una configurazione pulita per un VCS, che funziona insieme a un software di tracciabilità dei problemi, ci permette di lavorare insieme sullo stesso progetto allo stesso tempo senza sovrascrivere i nostri codici e ci offre semplicemente il vantaggio della versione- controllo.
Penso che la prima domanda per noi sia quale tecnologia dovremmo usare. Alcuni di noi hanno già esperienza di sovversione. Ma perché git è una sorta di "standard" e ci sono molti argomenti "pro git" tra gli utenti del web che tendiamo ad usare git.
Qui inizia la nostra incertezza. Per usare git - un VCS decentralizzato - sembra che dobbiamo iniziare a utilizzare server di sviluppo separati sul computer di ogni sviluppatore. I problemi con questo sono:
- Alcune volte lavoriamo su computer diversi, quindi quando ci dimentichiamo di inserire il nostro codice abbiamo un problema.
- Dovremmo lavorare con le macchine virtuali perché i server di sviluppo devono essere gli stessi del nostro server live (Questo semplicemente non sarebbe applicabile nel nostro ambiente, credetemi non è possibile).
- Il server di sviluppo di solito serviva anche da server di "prova" o "presentazione" in cui i non sviluppatori davano un'occhiata a cosa sta succedendo.
Esiste un'altra possibile configurazione con git in modo da poter beneficiare del sistema mentre si utilizza ancora un singolo (!) server di sviluppo? Forse con diverse directory per ogni sviluppatore. Oppure possiamo ancora lavorare sulla stessa base di codice, magari bloccando i file su cui stiamo lavorando e poi impegnandoli su un repository. Forse è importante dire che mentre è diventato un fattore per noi è ancora insolito che più sviluppatori lavorino contemporaneamente alla stessa parte di un'applicazione.