Questão
Existe uma razão legítima para NÃO usar o SVN para implantações de produção ou isso é apenas um caso de preferência pessoal e não existe um caso real contra o SVN?
fundo
Meu local de trabalho tem uma cultura de marcação de versão no SVN e, em seguida, a implantação dessas versões diretamente nos vários servidores da Web, usando svn co
ou svn switch
incluindo diretamente a produção.
Pessoalmente, tenho um problema com isso, pois acredito que, sem usar um script de compilação e implantação ou algum formulário ou implantação automatizada, você perde as configurações do ambiente de integração, pois não são documentadas. No entanto, mais do que isso, tenho a sensação de que pode haver um perigo oculto em fazer aquilo que foi esquecido, algo que ainda precisa elevar sua cabeça feia.
Eu levantei minhas preocupações com a equipe de operações, responsável por implantar o código em nossos vários ambientes (preparo, pré-produção, produção) etc. Seus argumentos eram basicamente de que funcionou muito bem até agora, sem motivo para mudar.
Editar:
O que quero dizer sobre construir e implantar:
Por exemplo, se um desenvolvedor exigir uma configuração web.config adicionada para um ambiente específico. O Web.config geralmente não é mantido no svn e, portanto, esses arquivos são atualizados manualmente, sem qualquer forma de script de construção automatizado. Portanto, se eles estiverem perdidos ou o OPS se esquecer de adicionar um campo ao web.config para uma versão, você terá problemas.
Um script de construção que diz que usa XMLPoke para gerar automaticamente um web.config apropriado para um ambiente específico é ideal, pois você possui um script versionável que documenta todas as alterações necessárias para cada um de seus ambientes.
Método atual de compilação e implantação
Para o projeto em questão, um desenvolvedor cria uma versão manualmente, outros projetos têm a etapa de criação automatizada com NANT ou MSBuild, o que é bom.
As migrações de banco de dados para a maioria dos projetos são via scripts de banco de dados ou scripts de migração (Migrator.NET) ou pacotes CMS.
O IC geralmente é feito pelo Team City por check-in, temos um processo de revisão de código em que todos os tickets são feitos em filiais e, em seguida, são revisados por pares para validação e correção / qualidade antes da verificação no tronco (funciona bem).
No entanto, a implementação real do código é quase sempre via SVN, seja através de uma finalização de uma liberação marcada ou, mais geralmente, de um switch SVN. Isso é algo que me parece estranho: estamos usando nosso repositório como parte do processo de implantação.
A configuração geralmente não muda com muita frequência, as únicas coisas que estarão nos arquivos de configuração são informações específicas do ambiente. Tudo o resto está no banco de dados.
Não me interpretem mal, isso funciona, funciona bem. No entanto, eu quero tentar empurrar para uma construção e implantação automatizadas. Eu usei isso com o Rails e Capistrano e para projetos pessoais usando Cygwin, Nant e SSH.
Mais importante, eu precisaria de argumentos válidos muito específicos para fazer com que meus colegas mudassem para o uso de uma compilação e implantação automatizada.
Ou não existem argumentos reais válidos contra o uso do SVN especificamente para implantar na produção?