Equipe trabalhando pelo Eclipse, Gostaria de uma sugestão de vocês

Boa tarde galera.

Trabalho com desenvolvimento PHP e JAVA e em breve Python e estou com um probleminha aki na empresa…

É o seguinte… Aki no trampo usamos Eclipse, até o momento era eu e o dono do sistema então, faziamos a conexão pelo SSH mesmo do Eclipse e resolvia os nossos problemas. Porém, agora aumentamos a equipe e além das medidas de segurança básica no servidor e no banco de dados precisamos especificar melhor o trabalho em equipe.

Gostaria de saber qual a melhor sugestão para trabalho em equipe??? CVS, SVN, Mercurial, Git???
Se tiverem tutoriais, também ajuda.

Com base na experiência de vocês farei a mudança aki.

Obrigado desde já…

Caro ewt.melo

Você citou 4 ferramentas para gerenciar versionamento contudo existem situações internas de cada empresa que levam a adotar uma ferramenta específicas. Dentre as 4 que você citou conheço 2 (CVS e SVN) e acredito que o SVN seja a melhor opção pois ele guarda uma versão do seu sistema para cada Branch criada. Já o CVS ele cria uma pasta para cada arquivo e gerencia cada classe específica.

Detalhamento e vantagens para o SVN e desvantagens do CVS:

  • Guarda um histórico completo para cada versão da branch. No CVS é por arquivo individual.
  • Terá um projeto montado e já configurado. No CVS terá que montar seu projeto sempre que for realizar o checkout.

Detalhamento e vantagens para o CVS e desvantagens do SVN:

  • Só precisará de 1 repositório e poderá ter projeto e documentação. No SVN terá que ter um para projeto e outro para documentação.

Na empresa o qual eu trabalho usaremos o Mercurial, porém ainda não conheço detalhes da ferramenta, mas com certeza se pudesse decidir optaria pelo SVN por ser uma ferramenta segura e muito testada e talvez a mais utilizada entre as empresas.

SVN utilize o plugin para o eclipse e seja feliz … o svn é melhor pois podemos utiliza-lo com multi-usuários , na verdade o SVN é a evolução do CVS.

Conselho,

Não utilize o plugin(sub-eclipse) do eclipse para gerenciar branches apenas para commit e checkout pois ele é bugado, experiência própria. Para gerenciar utilize o ToirtoseSVN.

SVN e CVS são passado, não os use.

Imagine que seu servidor vá pro saco. Usando SVN ou CVS você se ferrou, vai ter que ficar catando os arquivos no computador de algum desenvolvedor. No caso do Git (e se não me engano do Mercurial também), esse problema não ocorre. Como ele clona o repositório, o servidor pode ir “pras cucuia” sem estresse.

Sem dizer que o algoritmo de versionamento do Git é bem mais decente.

Bom, eu não consigo pensar em usar SVN depois que conheci o Git. SCMs centralizados são chatos de se trabalhar.

E quais são os problemas da centralização?

Burocracia

  • As permissões de acesso podem atrasar o desenvolvimento

Lentidão

  • Quanto mais pessoas usam, mais o servidor pesa

Desenvolvimento linear

  • Mudar de tarefa quase sempre causa perda do trabalho

Totalmente remoto

  • Dependência extrema do servidor

E por quê usar o Git? Simples:

Distribuido

  • Altíssima escalabilidade
  • Fácil adaptação a qualquer fluxo de trabalho.

Tudo é local

  • Favorece o desenvolvimento não-linear
  • O desenvolvedor fica livre pra criar quantos branches forem necessários
  • Diminui bastante o tráfego de pacotes na rede

Rápido e simples

  • Escrito em C e usa uma estrutura de dados simples
  • Branches e merges são extremamente rápidos e eficientes

Pequeno

  • Sua estrutura local, com todo o histórico do repositório, é um pouco maior do que a do SVN (que conta só com a última versão)

Alguns links úteis

http://github.com/guides/git-cheat-sheet (excelente cheat sheet sobre GIT)

http://www.youtube.com/watch?v=4XpnKHJAok8 (palestra do Linus no Google)
http://git.wiki.kernel.org/index.php/LinusTalk200705Transcript (transcrição da palestra)

http://www.akitaonrails.com/2008/10/2/entendendo-git-e-instalando-gitorious-git-via-web (link interessante pra quem quiser ter um gitorius no seu próprio servidor)
http://www.akitaonrails.com/2007/9/22/jogar-pedra-em-gato-morto-por-que-subversion-no-presta (uma comparação entre GIT e SVN)
http://www.akitaonrails.com/2008/2/12/git-para-cientistas-da-computa-o (explicação técnica do funcionamento do GIT)

http://marklodato.github.com/visual-git-guide/ (guia visual do GIT - muito interessante)

Tá meio com cara de slideshow porque são os tópicos de um slideshow que montei há uns anos quando fui fazer uma apresentação sobre o Git. (Talvez alguns links não estejam no ar, não tenho como checar porque aqui no trabalho quase tudo é bloqueado.)

Em suma, o Git te permite trabalhar offline praticamente o tempo todo, o que é ótimo pois você pode criar branches pra corrigir um erro ou criar vários branches pra testar implementações diferentes para uma nova funcionalidade (experimente fazer isso em um SCM centralizado pra ter uma penca de branches com nomes terríveis no servidor). Existe um plugin utilizável pro Eclipse, pro IntellijIDEA e tem até uma versão do Tortoise pra ele (além de outras ferramentas gráficas pro linux como o git-cola). Eu costumo usar ele na linha de comando mesmo ou com os plugins pro Sublime Text e pro IntellijIDEA. Faço merges nele que o SVN iria pirar (renomeando e alterando arquivos simultaneamente no “trunk” e no branch, por exemplo), não preciso instalar nada em um servidor remoto pra usar na minha máquina (a instalação de um repo central dele, inclusive, não é nenhuma dor de cabeça) e, de quebra, ainda consigo integrar ele com o SVN pro caso de a empresa trabalhar com este.

Vale muito a pena você dar pelo menos uma olhada nele antes de se decidir por um SCM centralizado (SVN e CVS, por exemplo).

Vejo muita gente que já usa SVN reclamar do Git mais porque não conhece os conceitos do Git do que por algo significativo. Não desmereço o SVN, só acho que o tempo dele se foi (e faz um bom tempo).

Quando eu disse SVN as vezes nos esbarramos em algumas burocracias dentro da empresa, por exemplo eu já trampei em uma empresa que não poderiamos utilizar o git e sim que os códigos ficariam em server na empresa e este fazia parte das rotinas de backup …e já era …não tinhamos opção …infelizmente …tem lugar que é assim, não sei se é o caso do nosso amigo …

Infelizmente eu ainda não trabalhei em um lugar onde o Git fosse utilizado. Mas eu sempre usava o git-svn pra integrar o meu git com o SVN da empresa.

Eu tenho lá minhas dúvidas de conseguir implantar o Git em algum lugar, nunca vi tanta resistência assim pra adoção de uma ferramenta excepcional.

Infelizmente eu ainda não trabalhei em um lugar onde o Git fosse utilizado. Mas eu sempre usava o git-svn pra integrar o meu git com o SVN da empresa.

Eu tenho lá minhas dúvidas de conseguir implantar o Git em algum lugar, nunca vi tanta resistência assim pra adoção de uma ferramenta excepcional.[/quote]

Na verdade as vezes você entra em alguma empresa onde já exista uma estrutura que de certa maneira funciona e a equipe existente esta acostumado com esta maneira. mesmo você chegando nesta equipe e dizendo das inúmeras vantagens que o git tem em relação ao svn , alguns podem até se entusiasmar e outras vão criar um monte de restrição …enfim …faz parte …nem todo mundo esta preparado para o novo …se é que você me entende…rs…fazer o que …abs …

A CME (Chicago Merchantile Exchange) usava o ClearCase e o trocou pelo GIT. Deve ter gasto uma nota no ClearCase, mas é melhor você assumir o prejuízo que continuar tendo prejuízo ao usar uma ferramenta muito amarrada, tal como é o ClearCase.

Infelizmente eu ainda não trabalhei em um lugar onde o Git fosse utilizado. Mas eu sempre usava o git-svn pra integrar o meu git com o SVN da empresa.

Eu tenho lá minhas dúvidas de conseguir implantar o Git em algum lugar, nunca vi tanta resistência assim pra adoção de uma ferramenta excepcional.[/quote]

Na verdade as vezes você entra em alguma empresa onde já exista uma estrutura que de certa maneira funciona e a equipe existente esta acostumado com esta maneira. mesmo você chegando nesta equipe e dizendo das inúmeras vantagens que o git tem em relação ao svn , alguns podem até se entusiasmar e outras vão criar um monte de restrição …enfim …faz parte …nem todo mundo esta preparado para o novo …se é que você me entende…rs…fazer o que …abs …[/quote]

Entendo sim…hehe… pelo menos é engraçado ver as pessoas de olhos arregalados quando eu faço um merge no git em meio segundo…fico espantado com o tanto de situações que ele consegue lidar que o SVN pede arrego.

Só o rebase dele já deixa o povo de queixo caído.