Quais são as vantagens de usar SVN sobre CVS?

A minha empresa está a usar o CVS como padrão de controlo de origem. No entanto, ouvi muita gente dizer que a SVN é melhor.

Sei que a SVN é mais nova, mas, tirando isso, não estou familiarizado com os seus benefícios.

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

Author: Troy Alford, 2008-08-04

12 answers

O CVS apenas acompanha a modificação numa base ficheiro-a-ficheiro, enquanto o SVN acompanha um commit inteiro como uma nova revisão, o que significa que é mais fácil seguir o histórico do seu projecto. Adicione o fato de que todos os softwares modernos de controle de fonte usam o conceito de revisão para que seja muito mais fácil migrar do SVN do que do CVS.

Existe também o problema do commit Atómico. Embora eu só o tenha encontrado uma vez, é possível que 2 pessoas se comprometendo juntas no CVS possam entrar em conflito umas com as outras., perder alguns dados e colocar o seu cliente num estado inconsistente. Quando detectados precocemente, estes problemas não são grandes porque os seus dados ainda estão por aí, em algum lugar, mas pode ser uma dor em um ambiente estressante.

E, finalmente, já não são desenvolvidas muitas ferramentas em torno do CVS. Enquanto as novas e brilhantes ferramentas novas como Git ou Mercurial definitivamente falta ferramentas ainda, SVN tem uma grande base de aplicação em qualquer sistema.

Editar 2015 : a sério, esta resposta tem 7 anos agora. Esquece o SVN, vai usar o Git como toda a gente!

 57
Author: Vincent Robert, 2015-10-10 19:12:45

Uma das muitas comparações:

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

Isto é muito específico para esse projeto, mas muitas coisas surgem em geral.

Pro Subversion:

  • Suporte para renomeações/jogadas versionadas (impossível com o CVS): Fingolfin, Ender
  • suporta directórios nativamente: é possível removê - los, e eles são versionados: Fingolfin, Ender
  • as propriedades do Ficheiro estão versionadas; não mais" bit executável " hell: Fingolfin
  • o número total da revisão torna o teste de versionamento e regressão da compilação muito mais fácil: Ender, Fingolfin
  • Atómico comete: Fingolfin
  • ramificação e marcação intuitiva (baseada em listas): Fingolfin
  • programas de gancho mais fáceis (envio pré/pós, etc.): combinados com o somatório (eu uso-o para o Doxygen após commits)
  • Impede o envio acidental de ficheiros conflituosos: Cavalo Salgado, Fingolfin [[14]] Suporte para personalização comando 'diff': Fingolfin E são instantâneos.
 19
Author: Michael Stum, 2008-08-04 14:09:54

A SVN tem 3 vantagens principais sobre o CVS

    É mais rápido.
  • suporta versão de ficheiros binários
  • e adiciona commit transacional (tudo ou nada)
 14
Author: lubos hasko, 2008-08-04 14:35:12

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

 7
Author: Mat, 2008-08-04 14:14:14

Apoiarei a sugestão de Erídio de Git, mas expandi-la-ia para outros DRCS (sistema de controle de revisão distribuído) como Mercurial e bazaar.

[[1] Estes produtos são relativamente recentes e o nível de equipamento e integração com eles parece baixo no momento (com base na minha pesquisa inicial). Eu diria que eles eram mais adequados para os power-developers lá fora (e aqui ;-)). Por outro lado, o que é que o CVS não faz por si? De a tua pergunta inicial, não tens nenhuma, " o CVS não presta nisto, o que posso usar em vez disso?" Tens de pesar os custos de qualquer migração potencial contra os benefícios. Para um projecto existente, penso que seria difícil de justificar.
 4
Author: Steven Dick, 2008-08-18 17:04:41
Uma coisa a não esquecer é o ecossistema. Eu estava trabalhando em uma loja de CVSNT, e eu estava encontrando mais e mais ferramentas de código aberto suportadas SubVersion por padrão.
 4
Author: engtech, 2008-08-18 17:22:05

Btw: o CVSNT suporta commits atómicos

 2
Author: David Sykes, 2008-08-18 16:22:00

Como alguém que está no meio da alternância entre CVS e SVN (inicialmente nós mudamos todos os nossos projetos com cvs2svn e, em seguida, decidimos que iríamos de transição usando o svn em novos projetos), aqui estão alguns dos problemas que tivemos.

  • a junção e a ramificação são muito diferentes, e se você ramificar e fundir com frequência, a menos que o SVN 1.5 esteja a correr no seu servidor, terá de saber quando se ramificou (isto não é muito claro nas janelas de SVN do Tortoise). Michael diz a ramificação e fusão é intuitiva, eu diria que depois de usar o CVS por 10 anos, não é.
  • Se estiver a correr o servidor de SVN no Linux, pode ser difícil fazer com que a sua SA passe para o svn 1.5, como a instalação predefinida 1.4.x.
  • A fusão de conflitos não é tão fácil nem tão clara (pelo menos para mim e para os meus colegas de trabalho) em TortoiseSVN como é em TortoiseCVS. A abordagem de três áreas leva algum a se acostumar e o WinMerge (minha ferramenta de junção preferida) não faz uma área de três mesclar.
  • Cuidado: muitos dos tutoriais on-line e artigos de revistas que eu tenho lido, obviamente, não branch e merge, você deve configurar o repositório principal como https://svn.yoursvnserver.com/repos/YourProject/Trunk e ramos https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX . Você pode limpar se você começar seus repos no lugar errado, mas isso leva a confusão.
 2
Author: Kris Erickson, 2008-09-04 17:44:16

Devias dar uma vista de olhos a Git em vez de SVN. É um DVCS que é rápido e muito poderoso. Não é tão fácil de usar como a SVN, mas está a melhorar nesse aspecto, e não é difícil de aprender.

 1
Author: Kevin Ballard, 2008-08-06 23:09:43

CVS (Concurrent Versions System) e SVN (SubVersioN) são dois sistemas de controle de versões que são popularmente usados por equipes que estão colaborando em um único projeto. Estes sistemas permitem aos colaboradores acompanhar as mudanças que são feitas e saber quem está desenvolvendo qual e se um ramo deve ser aplicado ao tronco principal ou não. O 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 introduz um muitas melhorias para atender às demandas da maioria das pessoas.

 1
Author: vidy, 2018-07-17 07:19:01

Também poderá optar por migrar apenas o código mais recente do CVS para o SVN e congelar o seu repo CVS actual. isso tornará a migração mais fácil e você também pode construir seus lançamentos de legado no antigo CVS repo.

 0
Author: webwesen, 2008-10-08 16:19:04
Bem, algumas coisas que sinto tornam a svn fantástica.
  1. A combinação SVN-Altassian crucible é um método de análise e de controlo de qualidade muito superior
  2. Melhor gestão dos conflitos e fusão É obviamente mais rápido para fazer check-out, realizar commits, etc.
  3. o problema do commit atômico-é possível que 2 pessoas se comprometendo juntas no CVS possam entrar em conflito umas com as outras, perdendo alguns dados e colocando sua base de código em um estado inconsistente

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

 0
Author: richie, 2016-09-18 14:01:16