Configurando um controle de versão em ambiente de produção

Tenho 2 servidores 1 em CentOS e outro Win2008.

no Windows 2008 configurei o IIS7 + PHP + MySQL, esta funcionando tudo Ok

agora estou tendo duvidas em relação ao controle de versão dos arquivos em php nesse servidor, eu usava um servidor para armazenar os scripts em php e rodar os sites para produção e testes, mas percebi que assim fica muito ruim pois mais programadores trabalham no mesmo projeto e os arquivos são alterados direto no servidor, resolvi então configurar da seguinte maneira

em cada maquina dos funcionarios eu configuro o Apache+PHP então todos programam localmente e no servidor eu configuro um Controle de Versão onde cada funcionario da um Commit no projeto e é atualizado os arquivos no servidor, esses arquivos ficam no diretorio root do IIS entao ali eu consigo executar normalmente os sites.

Primeira duvida, essa é a forma certa de se trabalhar ??

Segunda duvida, eu instalei o VisualSVN nesse servidor e configurei o caminho do repositorio no diretorio do IIS mas os arquivos nao ficam fisicamente la entao eu não consigo fazer com que ao dar o Commit os arquivos la no diretorio do servidor apareçam fisicamente e assim eu executo o site, como resolvo esse problema??

Qualquer sugestão e esclarecimento é bem vinda.

Obrigado.

Você quase acertou…

Utilizar um controle de versão, como SVN é essencial sim. Sem ele o desenvolvimento vira um caos. O idela é ter esse servidor separado do servidor web/aplicação.não curto muito a idéia de uma máquina com seu repositório ser a mesma que vai estar disponível na internet pra qualquer um acessar. Questão de segurança. Levarem teu código fonte já é um problema. Imagina se ferram seu repositório. Adeus projeto.

Mas quanto a usar o repositório como site, diretamente, já vimos acima uma razão pra isso. Outra razão é que normalmente no repositório podem existir arquivos de projeto que não precisam ser colocados no servidor web. Além disso, você não vai querer que um desenvolvedor coloque um arquivo não homologado diretamente no seu servidor web, vai?

Então, faz assim:

Repositório - Onde fica o repositório de arquivos. Quando for necessário instalar o site em um servidor, faz-se um export do projeto e, se for o caso, um build (muito comum em projetos java)

Máquinas de desenolvimento - Se possível, reproduzem o ambiente de produção e permitem ao desenvolvedor testes locais. Eles desenvlvem, testam e mandam para o repositório.

Servidor de Homologação - De marcos em marcos, tira-se um export do repositório e implanta-se nesse servidor. Testes são executados para verificar não conformidades, bugs e afins. Quanto mais frequentes esses marcos, melhor. Se os testes forem automatizados e o processo de homologação for diário, melhor ainda. Existem ferramentas pra fazer isso. Uma vez aprovado, o sistema pode ir para produção.

Servidor de produção - Só entra aqui código homologado. Nada de código sem teste ou de desenvolvedor colocando direto em produção. Não que eles sejam maus. São apenas humanos.

Certo mas não expliquei direito esse servidor no caso só fica local na empresa não tem acesso web, no caso temos outro servidor dedicado onde ficam os sites finais, esse servidor que eu falo é só pra ambiente de produção, então tenho apenas duas camadas.

Máquinas de desenolvimento -> no mesmo molde que voce me explicou

e

Servidor de produção -> onde fica meu repositório sem acesso dos usuarios como funcionava antes, só recebo arquivos via repositorio depois de armazenado nesse servidor e testado ae sim os arquivos eu subo para o servidor dedicado.

agora a duvida é quando acontece o commit na maquina do programador pro servidor de produção eu nao consigo fazer altomatico que os arquivos "comitados" ja fiquem fisicamente no diretorio para que assim eu ja consiga acessar as alterações??

porque eu tentei fazer isso mas o VisualSVN nao gera o arquivo fisicamente pelo que eu entendi.

Obrigado.