Estou trabalhando em uma equipe pequena com até 5 desenvolvedores (web). Como nossa equipe está crescendo com frequência e tivemos problemas com várias pessoas trabalhando no mesmo código, decidimos configurar um VCS.
Situação atual
Atualmente, estamos trabalhando com um servidor de desenvolvimento central (LAMP). Portanto, todo desenvolvedor trabalha na mesma base de código e, se o código estiver testado e pronto para o nosso servidor ativo, basta copiá-lo via ftp. Eu sei que isso é algum tipo de fluxo de trabalho do ano 1600, mas sim - é o que é e também o motivo dessa pergunta.
No servidor de desenvolvimento, nossa estrutura de diretórios fica assim:
/var/www
/Project1
/Project2
/Project3
...
Além disso, existem alguns pequenos aplicativos que não são da web - aplicativos para Android / iPhone / Windows 8 etc. e algumas ferramentas C # que também devem ser incluídas no VCS.
Objetivo e problemas
Nosso objetivo é obter uma configuração limpa para um VCS, que funciona em conjunto com um software de rastreamento de problemas, nos permite trabalhar juntos no mesmo projeto ao mesmo tempo, sem sobrescrever nossos códigos e simplesmente nos oferece a vantagem do controle de versão.
Penso que a primeira pergunta para nós é: qual tecnologia devemos usar. Alguns de nós já experimentaram subversão. Mas como o git está se tornando o "padrão" e existem muitos argumentos "pro git" entre os usuários da web, tendemos a usar o git.
Aí começa nossa incerteza. Para usar o git - um VCS descentralizado - parece que precisamos começar a usar servidores de desenvolvimento separados no computador de cada desenvolvedor. Os problemas com isso são:
- Algumas vezes, trabalhamos em computadores diferentes; portanto, quando esquecemos de enviar o código, temos um problema.
- Teríamos que trabalhar com máquinas virtuais porque os servidores de desenvolvimento devem ser os mesmos do nosso servidor ativo (isso simplesmente não seria aplicável em nosso ambiente, acredite em mim, não é possível).
- O servidor de desenvolvimento geralmente também servia como um servidor de "teste" ou "apresentação", onde os não desenvolvedores davam uma olhada no que estava acontecendo.
Existe outra configuração possível com o git para que possamos nos beneficiar do sistema enquanto ainda estamos usando um único servidor de desenvolvimento (!)? Talvez com diretórios diferentes para cada desenvolvedor. Ou ainda podemos trabalhar na mesma base de código, talvez bloqueando os arquivos em que estamos trabalhando e enviá-los para um repositório. Talvez seja importante dizer que, embora isso tenha se tornado um fator para nós, ainda é incomum que vários desenvolvedores trabalhem na mesma parte de um aplicativo ao mesmo tempo.