Subversion ( SVN ) e do Concurrent Versions System (CVS) são dois dos sistemas de controle de versão mais conhecida e mais amplamente utilizados usados para gerenciar as centenas de documentos que existem no projeto de programação típica. Ambos , em sua própria maneira , permitir que toda uma equipe de programadores para trabalhar nos mesmos arquivos , minimizando o tempo e esforço necessário para mesclar as alterações , mas eles são muito diferentes na forma como eles funcionam. Formato de armazenamento
CVS armazena todos os arquivos do projeto em um conjunto de ramificações de pastas no sistema de arquivos. Por outro lado , SVN armazena seus arquivos em um banco de dados : ou BerkleyDB ou FSFS . Isso faz com que o CVS mais lento do SVN , mas também faz com que os arquivos do CVS pode ser recuperada em um desastre usando ferramentas do gerenciador de arquivos apenas comuns como o Windows Explorer ou o shell bash . Bancos de dados SVN pode ser corrompido, e são necessárias ferramentas especiais para recuperar arquivos fora do repositório quando isso acontece.
Transações
CVS armazena projetos em um arquivo -por- base arquivo . Isso torna o sistema um pouco mais simples , como o programador pode check-in e out de arquivos individuais, mas tem um efeito colateral desagradável. Os programadores não tendem a fazer modificações em apenas um arquivo . Em vez disso, a mudança de uma arquivo exigem pequenas modificações para os outros. Com CVS, é possível para um problema de rede para provocar alguns dos arquivos alterados para ser atualizado no repositório, potencialmente quebrar a construção e causando uma grande confusão na equipe se o problema não for pego imediatamente. SVN comete arquivos como um projeto e faz isso usando um conceito de " transacção " : . Ou todas as alterações são confirmadas com êxito ao servidor , ou nada está empenhada
Tipos de Arquivo
CVS foi projetado para lidar apenas com dados de texto simples ( como é normalmente encontrado no código fonte). No entanto, sua programação um programa raro que não inclui , pelo menos, alguns dados não- texto, como ícones gráficos , ponteiros de mouse personalizado e logotipos . CVS pode ser modificado para lidar com dados não-texto , mas SVN suporta todos os tipos de arquivos diretamente, sem qualquer outra modificação ou customização.
Branches
CVS, cada arquivo é atribuído automaticamente o seu próprio número de versão . Quando o projeto for verificado , a versão mais recente de cada arquivo é fornecido para o programador. No SVN , todo o projeto tem uma versão . Embora os arquivos nunca são duplicados desnecessariamente no servidor ( para economizar espaço ), a interface fornecida para o usuário é que a cada commit de todos os tempos para o servidor é imediatamente acessível a eles pelo número da versão , sem ter que especificar construir datas ou números de etiqueta .