Gostaria da opiniao dos profissionais do fórum sobre CVS x SVN

31 respostas
A

Boa tarde a todos. Foi me lançado o desafio de verificas os prós e contras em relação ao CVS e SVN no linux. Pesquisei, pesquisei, mas ainda não tirou minhas dúvidas em relação ao funcionamento deles.
O que eu gostaria de saber:

  1. Ambos permitem alterar o nome da Tag? melhor dizendo, possuo uma tag ISDN_xxxxx_project: Versao 2.0. do projeto PABX , queria alterar o nome dessa tag para a versão 2.1 ( visando a coerencia entre os projetos )

  2. Ambos são econômicos em questão de uso em espaço em disco? Pelo que vi somente o SVN tem a capacidade de ligar com arquivos binários( q é bom para nós programadores em C), mas quanto ele ocupa de espaço em disco? Quanto uma tag custaria em Megabytes com esse incremento?

Desculpem se fui incoerente ou pouco claro, sou novo nessa área e estou tentando entender esse mundo de controle de repositórios e controle de qualidade.

Obrigado a todos.

31 Respostas

louds

anjo_ed:
Boa tarde a todos. Foi me lançado o desafio de verificas os prós e contras em relação ao CVS e SVN no linux. Pesquisei, pesquisei, mas ainda não tirou minhas dúvidas em relação ao funcionamento deles.
O que eu gostaria de saber:

  1. Ambos permitem alterar o nome da Tag? melhor dizendo, possuo uma tag ISDN_xxxxx_project: Versao 2.0. do projeto PABX , queria alterar o nome dessa tag para a versão 2.1 ( visando a coerencia entre os projetos )

Não sei, mas normalmente você vai querer simplesmente aplicar outra tag. Lembrando que CVS não tem diferença entre tags e branchs, enquando no SVN são duas coisas diferentres.

CVS é uma bomba quando o assunto é branches, ele cria 1 cópia inteira do repositório, enquanto o SVN faz isso somente para aquilo que for alterado. Um branch no CVS pode levar uma hora para ser executado, enquando com SVN demora sempre o mesmo que um commit normal.

Ambos são muito ruins com arquivos binários pois não é o forte deles.

anjo_ed:

3) A tendência é o uso do SVN correto? Pelo que li existem alguns programas complementares ao svn que fazem controle de qualidade do projeto, como relatórios, documentação dos scripts e isso ajudaria muito a obter certificado Commit ( é esse o nome da certificacao internacional de qualidade? )

Desculpem se fui incoerente ou pouco claro, sou novo nessa área e estou tentando entender esse mundo de controle de repositórios e controle de qualidade.

Obrigado a todos.

A tendencia é todo mundo odiar usar a porcaria do CVS, enquanto o svn é super prático. CVS é uma m$#%#$ quando o assunto é branching e merging, não conheço quem não tenha muito a reclamar sobre isso. SVN, em contrapartida, possui commits atômicos, permite tagging independente de branches e funciona muito melhor que CVS para quase tudo que não seja suporte a ferramentas legado.

A

HUM…Eu falei em arquivos binários porque temos uma equipe de engenheiros aqui. Todos trabalham em linux com c/c++.
Cada um eh responsável por uma parte do projeto. Estamos usando CVS, no entanto, estamos tendo dificuldades com a coerencia das versões. Por exemplo:

Sip V2.0 , Pabx V2.0 e Drivers V.20
Quando alguem lança no repositorio uma versao mais nova e pronta, por exemplo Pabx V2.1( final), para compilarmos a Imagem de toda ( eu digo toda, querendo dizer o conjuntos , com os tres modulos compilados) precisaríamos modificar a versao do Sip e dos Drivers para V2.1 , para controle e não acabar compilando uma versão errada, já que a versao de ambos, V2.0 do sip e drivers, estam 100%. Por isso te pergunto se eh possivel renomear a tag.

Já a questão dos binários, quais problemas teríamos ao usar o Svn para esse fim??

nbluis

Mas pq renomear uma tag ?
O arquivo pode fazer parte de mais de uma versão do mesmo projeto, e consigo ter mais de uma tag.

A

Alias, nao fiz uma pergunta importante. Os arquivos binários, caso o svn não faça controle das versões, existe alguma alternativa para eu controlar isso?

fabiofalci

Git não é uma opção?
http://git.or.cz/

Nunca usei, mas quero usar

A

nbluis:
Mas pq renomear uma tag ?
O arquivo pode fazer parte de mais de uma versão do mesmo projeto, e consigo ter mais de uma tag.

talvez eu não tenha esclarecido corretamente. Queríamos alterar a tag da última versao válida daquele arquivo, passando para a versão a qual queremos compilar,deixando todos na mesma versão , entendeu?

A

fabiofalci:
Git não é uma opção?
http://git.or.cz/

Nunca usei, mas quero usar

mas ele atende aos meus pré-requisitos?

nbluis

Não entendi.

fabiofalci:
Git não é uma opção?
http://git.or.cz/

Nunca usei, mas quero usar


Eu também tenho muita curiosidade.
E pode inclusive trabalhar integrado ao SVN com o GIT-SVN.

A

Assim:

Temos várias versões , onde a maioria é beta. No entanto, quando um módulo fica pronto ( vamos dizer q a versao pronta eh a PABX V3.0 , versao final que está no repositório), nós simulamos o conjunto. Para simular nosso software, é preciso compilar cada módulo. Como cada módulo no repositório está em versões diferentes, como 1.2.3B, 2.1.F ( e isso significa que o último pacote funcional é 1.2.0 e 2.1, respecticvamente ), precisaríamos colocar ambos em versões iguais a do PABX, para fins de compilação.
Ou seja, é possível renomear a TAG do arquivo?

E outra? o SVN trabalha com arquivos binários controlando as versoes dele?

fabiofalci

anjo_ed:
fabiofalci:
Git não é uma opção?
http://git.or.cz/

Nunca usei, mas quero usar

mas ele atende aos meus pré-requisitos?

Nao sei, tem que ir no site e estuda-lo e testa-lo.

Mas que o linus faz uma prograpaganda dele isso ele faz
http://www.youtube.com/watch?v=4XpnKHJAok8

A

Bom, antes de testar, preciso saber do SVN se ele faz isso e se tem como renomear uma tag…

Aldrin_Leal

Antes de perguntar, então, teste o svn. Todas as suas perguntas estão contidas na documentação oficial.

(E as respostas também)

wmitsuda

É o contrário né? No SVN tags/branchs são cópias de um diretório. Se você faz uma cópia, é como se fosse uma tag. Se você começa a alterar a cópia, ele virar automaticamente um branch. Do ponto de vista da implementação são a mesma coisa.

Curiosidade: em que que o SVN não é bom c/ arquivos binários? O CVS eu sei que é uma bomba e já tive problemas com corrompimento, o SVN nunca usei p/ nada que fosse alguns arquivos pequenos. Mas lembro que na documentação do SVN eles dizem tratar binários corretamente.

Pena que o pessoal do SVN só se tocou que merge tracking é uma coisa importante agora na versão 1.5…

louds

Arquivos binários no SVN funcionam, mas o versionamento deles não é muito legal já que ocupa toneladas de espaço. Funciona muito melhor que o CVS, porém fica bem atrás de soluções proprietárias que usam algoritmos de diff binário mais avançados.

qmx

fabiofalci:
Git não é uma opção?
http://git.or.cz/

Nunca usei, mas quero usar

É uma ferramenta fantástica, estou usando em produção no nosso time de desenvolvimento, usando um SVN como upstream… nem dá pra discutir, te dá muita liberdade e de quebra ainda deixa o repo SVN limpo…

Tomara que a versão pra windows fique mais usável, assim dá pra migrar todo mundo pro git…

Sobre o SVN, a parte que eu realmente não gosto é a falta de merge-tracking (parece que agora eles resolveram ver isso)

bombbr

Quais ferramentas cliente vocês utilizam com o SVN?

Existem alguma ferramenta com todas as funcionalidades do WinCVS ?

A

louds:
wmitsuda:

Curiosidade: em que que o SVN não é bom c/ arquivos binários? O CVS eu sei que é uma bomba e já tive problemas com corrompimento, o SVN nunca usei p/ nada que fosse alguns arquivos pequenos. Mas lembro que na documentação do SVN eles dizem tratar binários corretamente.

Arquivos binários no SVN funcionam, mas o versionamento deles não é muito legal já que ocupa toneladas de espaço. Funciona muito melhor que o CVS, porém fica bem atrás de soluções proprietárias que usam algoritmos de diff binário mais avançados.

Esse que é o meu problema…as toneladas de espaço dos arquivos binários…Vc tem alguma solução (pra linux) para isso?

Estou gostando da disposição do pessoal em me ajudar. Obrigado a todos

A

Continuando…testei o SVN. Bom ele, trabalha bem melhor com binários e sabe administrar o repositorio. Bem inteligente …
Mas me surgiu um dúvida em relação ao GIT…Ele adiministra localmente o repositorio SVN ouuu ele eh um concorrente do SVN?

Aguardo respostas.

Luca

Olá

O você pode continuar usando o repositório svn e acessá-lo via git-svn (tanto para escrever como para ler).

[]s
Luca

A

Ah, entao era realmente o que eu entendi…ele é um interface local do svn, isso?
mas o git nao faz uma copia inteira do repositorio? Ou ele usa o mesmo metodo do SVN no servidor? Ou seja, Se o repositorio tem 100 MB no servidor, quando peço pro git baixar, o git soh faz um sombreamento e vai salvando as alteracoes que forem feitas nos arquivos?

nbluis

Não ele é um “concorrente do svn” como você disse.
Ele integra totalmente com o svn pelo git-svn citado pelo Luca.

anjo_ed:

mas o git nao faz uma copia inteira do repositorio? Ou ele usa o mesmo metodo do SVN no servidor? Ou seja, Se o repositorio tem 100 MB no servidor, quando peço pro git baixar, o git soh faz um sombreamento e vai salvando as alteracoes que forem feitas nos arquivos?

Ele faz a copia de todo o repositorio para administrar localmente.

Não existe um servidor central git, o servidor central é aquele que você eleger como.
É uma mudança paradigma para um scm distribuido.

A

Ok, obrigado pelo esclarecimento.

Um última pergunta. O git atualiza freqüentemente o repositório local? Pois, pelo visto, o git nao me serveria, já que com ele posso ter duas versões de um mesmo arquivo em máquinas diferentes, tendo assim um problema, já que um desenvolvedor pode ter uma versão diferente desse mesmo arquivo e o outro programador estar com uma versao mais diferente ainda. Assim, acho, teríamos um problema. Não?

cv1

Isso aconteceria com qualquer sistema de controle de versao. Pra isso que vc tem um repositorio “central” (que, no caso do git, pode ser qualquer repositorio). Uma coisa que funciona bem eh usar o repositorio do servidor de integracao continua como o “oficial”, pra onde todo mundo manda o codigo que ta pronto. De novo, isso funciona com qualquer sistema de versionamento.

otaviofcs

O git é incrível, principalmente quando você está offline. Imagine ir viajar e você resolveu dar uma trabalhadinha à noite :). Aí você tá no quarto da pousada e a conexão wireless lá é inexistente. Ou melhor, você tá no avião e teve uma idéia incrível e quer começar a implementar. Mas você quer mudar as coisas e não quer deixar de versionar seus passos (imagina ter que dar revert de tudo depois de 2h de trabalho).

Usando o git, isso nunca será problema pra você. Git é o futuro/presente e acho que a integração dele com o svn vai ficar.

abraços,

otávio

D

anjo_ed:
Boa tarde a todos. Foi me lançado o desafio de verificas os prós e contras em relação ao CVS e SVN no linux. Pesquisei, pesquisei, mas ainda não tirou minhas dúvidas em relação ao funcionamento deles.
O que eu gostaria de saber:

  1. Ambos permitem alterar o nome da Tag? melhor dizendo, possuo uma tag ISDN_xxxxx_project: Versao 2.0. do projeto PABX , queria alterar o nome dessa tag para a versão 2.1 ( visando a coerencia entre os projetos )

  2. Ambos são econômicos em questão de uso em espaço em disco? Pelo que vi somente o SVN tem a capacidade de ligar com arquivos binários( q é bom para nós programadores em C), mas quanto ele ocupa de espaço em disco? Quanto uma tag custaria em Megabytes com esse incremento?

Desculpem se fui incoerente ou pouco claro, sou novo nessa área e estou tentando entender esse mundo de controle de repositórios e controle de qualidade.

Obrigado a todos.

  1. Sim, você pode renomear a tag/branch. O processo de tagging/branching no svn se resume a um processo de “cópia” na qual ele nao realmente copia os dados, apenas versiona a partir daquele ponto em uma arvore de versoes diferente.

Diferente do que foi dito no post, no SVN não há diferença entre tag e branch, uma tag vira um branch conceitualmente, já que ambos são uma cópia.

No CVS, o branching é muito custoso.

  1. Uma tag não teria custos nos arquivos binários no SVN. nem o branch.

Não recomendo usar o git, já que é um projeto independente e vc vai ficar atrasado em relacao ao svn. Uma deficiencia do SVN é que o processo de merge não faz merge do changelog (ainda), algo que está previsto para a versão 1.5. Se vc tiver com o git, não terá um recurso como esse de imediato.

D

O TortoiseSVN. O chato é que ele não tem aqueles filtros do WinCVS, mas é muito bom mesmo.

D

nbluis:
Mas pq renomear uma tag ?
O arquivo pode fazer parte de mais de uma versão do mesmo projeto, e consigo ter mais de uma tag.

Por que o cara foi especifico nesse ponto, ele QUER renomear a tag. Ele perguntou se a ferramenta fazia isso.

A

Feito pessoal. SVN server funfando aqui.

Obrigado a todos pelas dicas

Mas vou precisar de mais uma… :oops:

Os arquivos .o , que são meus executáveis, precisam ser guardados juntos, eles precisam de um controle de versão também.
Pensei em criar um diretório BIN, dentro do repositorio SVN, no trunk ou até no Branch, para guardar meus binários. No entanto, eu terei um controle de versões adequado com o svn? Por exemplo :

  • dou um commit no PABX.o -> revisao 4
  • Gero um novo PABX.o. Dou um novo commit e o svn dah a ele revisao 5.

O que quero saber se esse é o melhor jeito de controlar meus binários. Ou vcs estam utilizando outra maneira para controlar isso??

Aguardo alguma sugestão. Obrigado.

Rubem_Azenha

anjo_ed, é altamente recomendável não versionar binários. Principalmente os gerados pela sua build.
O melhor seria você automatizar a sua build e versionar o seu script de build.

A

É, pelos testes q eu fiz, não tem sentido guardá-los, pois ocupam mais espaço…ainda mais que algumas imagens ( contendo um conjunto de .o )tem mais de 100 MB, tornaria lento um commit.

Bom, de qualquer maneira, entao não há o que fazer com os binários, no máximo, armazenar e ir controlando as versoes de cada binário por pastas(nomeadas com a versão do binário )gerenciadas pelo meu programa, não é?

louds

anjo_ed:
Feito pessoal. SVN server funfando aqui.

Obrigado a todos pelas dicas

Mas vou precisar de mais uma… :oops:

Os arquivos .o , que são meus executáveis, precisam ser guardados juntos, eles precisam de um controle de versão também.
Pensei em criar um diretório BIN, dentro do repositorio SVN, no trunk ou até no Branch, para guardar meus binários. No entanto, eu terei um controle de versões adequado com o svn? Por exemplo :

  • dou um commit no PABX.o -> revisao 4
  • Gero um novo PABX.o. Dou um novo commit e o svn dah a ele revisao 5.

O que quero saber se esse é o melhor jeito de controlar meus binários. Ou vcs estam utilizando outra maneira para controlar isso??

Aguardo alguma sugestão. Obrigado.

Versionar arquivos intermediarios do build é uma péssima idéia que vai te dar mais dor de cabeça que qualquer outra coisa.

Criado 20 de março de 2008
Ultima resposta 2 de abr. de 2008
Respostas 31
Participantes 13