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).