Pergunta

Minha empresa está usando o CVS como nosso padrão de fato para controle de origem.No entanto, ouvi muitas pessoas dizerem que o SVN é melhor.

Eu sei que o SVN é mais recente, mas fora isso, não estou familiarizado com seus benefícios.

O que procuro é uma comparação boa e sucinta dos dois sistemas, observando quaisquer vantagens ou desvantagens de cada um em um ambiente de desenvolvimento Java/Eclipse.

Foi útil?

Solução

O CVS rastreia apenas as modificações arquivo por arquivo, enquanto o SVN rastreia um commit inteiro como uma nova revisão, o que significa que é mais fácil acompanhar o histórico do seu projeto.Adicione o fato de que todos os softwares modernos de controle de origem usam o conceito de revisão, portanto é muito mais fácil migrar do SVN do que do CVS.

Há também o problema do commit atômico.Embora eu tenha encontrado isso apenas uma vez, é possível que duas pessoas que se comprometem juntas no CVS entrem em conflito, perdendo alguns dados e colocando seu cliente em um estado inconsistente.Quando detectados precocemente, esses problemas não são graves porque seus dados ainda estão disponíveis em algum lugar, mas podem ser um incômodo em um ambiente estressante.

E, finalmente, não são mais desenvolvidas muitas ferramentas em torno do CVS.Embora as ferramentas novas e novíssimas como Git ou Mercurial definitivamente ainda não tenham ferramentas, o SVN tem uma base de aplicativos bastante grande em qualquer sistema.

EDITAR 2015:Sério, essa resposta já tem 7 anos.Esqueça o SVN, use o Git como todo mundo!

Outras dicas

Uma das muitas comparações:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Agora, isso é muito específico para esse projeto, mas muitas coisas se aplicam em geral.

Subversão Pró:

  • Suporte para renomeações/movimentos versionados (impossível com CVS):Fingolfin, Ender
  • Suporta diretórios nativamente:É possível removê-los e eles são versionados:Fingolfin, Ender
  • As propriedades do arquivo são versionadas;chega de inferno de "bit executável":Fingolfin
  • O número geral de revisão facilita muito o controle de versão e o teste de regressão:Ender, Fingolfin
  • Comprometimentos atômicos:Fingolfin
  • Ramificação e marcação intuitivas (baseadas em diretório):Fingolfin
  • Scripts de gancho mais fáceis (pré/pós commit, etc.):SumthinWicked (eu uso para Doxygen após commits)
  • Impede a confirmação acidental de arquivos conflitantes:Cavalo salgado, Fingolfin
  • Suporte para comando 'diff' personalizado:Fingolfin
  • Diferenças offline e instantâneas:sete

SVN tem 3 vantagens principais sobre CVS

  • é mais rápido
  • suporta versionamento de arquivos binários
  • e adiciona commit transacional (tudo ou nada)

O livro Subversion tem um apêndice que detalha diferenças importantes do CVS, o que pode ajudá-lo a tomar sua decisão.As duas abordagens são mais ou menos a mesma idéia, mas o SVN foi projetado especificamente para corrigir falhas antigas no CVS, portanto, pelo menos em teoria, o SVN sempre será a melhor escolha.

Vou apoiar a sugestão de Eridius sobre o Git, mas eu a expandiria para outros DRCS (Sistema de Controle de Revisão Distribuído), como Mercurial e bazar.

Esses produtos são bastante recentes e o nível de ferramentas e integração com eles parece baixo no momento (com base na minha pesquisa inicial).Eu diria que eles eram mais adequados para os desenvolvedores avançados por aí (e aqui ;-)).

Por outro lado, o que não CVS atualmente faz por você?Pela sua pergunta inicial, você realmente não tem nenhuma: "CVS é ​​péssimo nisso, o que eu poderia usar?"

Você precisa pesar os custos de qualquer migração potencial em relação aos benefícios.Para um projeto existente, acho que seria difícil justificar.

Uma coisa que não deve ser esquecida é o ecossistema.Eu estava trabalhando em uma loja CVSNT e descobrindo cada vez mais ferramentas de código aberto com suporte para SubVersion por padrão.

por falar nisso:CVSNT suporta commits atômicos

Como alguém que está mudando entre CVS e SVN (inicialmente trocamos todos os nossos projetos com cvs2svn e depois decidimos que faríamos a transição usando apenas svn em novos projetos), aqui estão alguns dos problemas que tivemos.

  • A fusão e a ramificação são muito diferentes, e se você ramificar e mesclar com frequência, a menos que você tenha o SVN 1.5 em execução no seu servidor, será necessário saber quando você ramificou (isso não fica muito claro nas caixas de diálogo do Tortoise SVN).Michael diz que a ramificação e a fusão são intuitivas, eu diria que depois de usar o CVS por 10 anos, não é.
  • Se você estiver executando o servidor SVN no Linux, pode ser difícil fazer com que seu SA mude para o svn 1.5, pois a instalação padrão é 1.4.x.
  • Mesclar conflitos não é tão fácil ou tão claro (pelo menos para mim e para meus colegas de trabalho) no TortoiseSVN como é no TortoiseCVS.A abordagem de três painéis leva algum tempo para se acostumar e o WinMerge (minha ferramenta de mesclagem preferida) não faz uma mesclagem de três painéis.
  • Cuidado:muitos dos tutoriais on-line e artigos de revistas que li obviamente não ramificam e mesclam, você deve configurar seu repositório principal como https://svn.yoursvnserver.com/repos/YourProject/Trunk e filiais em https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX .Você pode fazer a limpeza se iniciar seus repositórios no lugar errado, mas isso causa confusão.

Você deveria dar uma olhada Git em vez de SVN.É um DVCS extremamente rápido e muito poderoso.Não é tão fácil de usar quanto o SVN, mas está melhorando nesse aspecto e não é que difícil de aprender.

CVS (Concurrent Versions System) e SVN (SubVersioN) são dois sistemas de arquivos de controle de versão usados ​​popularmente por equipes que colaboram em um único projeto.Esses sistemas permitem que os colaboradores acompanhem as alterações feitas e saibam quem está desenvolvendo qual e se uma ramificação deve ou não ser aplicada ao tronco principal.CVS é ​​o mais antigo dos dois e tem sido a ferramenta de colaboração padrão para muitas pessoas.O SVN é muito mais recente e apresenta muitas melhorias para atender às demandas da maioria das pessoas.

você também pode optar por migrar apenas o código mais recente do CVS para o SVN e congelar seu repositório CVS atual.isso tornará a migração mais fácil e você também poderá criar suas versões legadas no antigo repositório CVS.

Bem, algumas coisas que eu acho que tornam o svn incrível.

  1. A combinação de cadinho SVN-Altassian é um método muito superior de revisões e verificações de qualidade
  2. Melhor gestão de conflitos e fusões
  3. Obviamente, é mais rápido fazer checkouts, realizar commits, etc.
  4. O problema do commit atômico - É possível que 2 pessoas fazendo commit juntas no CVS entrem em conflito, perdendo alguns dados e colocando sua base de código em um estado inconsistente

A migração pode ser feita facilmente em poucas horas usando cvs2svn.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top