git vs Subversion - prós e contras [fechado]

11

Sou usuário do SVN há muitos anos e não posso dizer que estou totalmente feliz com isso. Alguns dias atrás, meu parceiro me pediu para dar uma olhada no git, dizendo que "ele tem melhor desempenho, fusão e ramificação mais fáceis".

Eu tenho lido alguns artigos de comparação git vs. SVN e ficaria feliz se as pessoas pudessem resumir os prós e contras usando os dois sistemas de controle de versão.

Agora estou olhando para pessoas que mudaram de um sistema para outro e ouvem opiniões subjetivas.

Sei por mim mesmo que gosto muito da maneira como o SVN funciona, tendo um repositório central de onde as pessoas podem fazer check-out, sabendo que posso implantar uma cópia de desenvolvimento ao vivo e uma cópia de produção ao vivo, mas às vezes temos dores de cabeça ao classificar conflitos ou outros erros e cada vez que precisamos diferenciar ou analisar o histórico de um arquivo, temos a latência da rede para lidar.

Por outro lado, ter uma plataforma distribuída também parece uma dor de cabeça, como controlar os acessos? você tem um repositório central de onde você envia e atualiza?

Obrigado por esclarecer um pouco mais sobre o assunto.

Adam Benayoun
fonte

Respostas:

15

Você está tentando comparar as duas ferramentas da percepção de um administrador do sistema ou como programador? Se você está olhando para isso da perspectiva dos programadores, talvez pergunte isso no stackoverflow. Ou melhor ainda, talvez você deva examinar o que já foi perguntado sobre " git svn ".

A coisa sobre git e svn, é que não é uma proposição de um ou outro. Você pode executar um repositório SVN e seus desenvolvedores podem usar o git-svn para interagir com ele, se acharem que o git é uma ferramenta melhor em um caso específico.

Zoredache
fonte
2

Na verdade, não existem profissionais para subversão sobre o git. Enquanto o git é distribuído, todos podem trabalhar em um repositório central usando ramificações de rastreamento remoto. O git é mais rápido, mais flexível e a fusão realmente funciona. Além disso, você pode trabalhar offline de maneira realista, enquanto que com o subversion, você não pode confirmar alterações se não tiver. Você pode trabalhar mais facilmente com confirmações individuais no git do que com um único ID de confirmação representando o estado do repositório no svn.

O acesso é controlado pelas contas de usuário / grupo no servidor git (você precisa inicializar o repositório de origem com 'git init --bare --shared' para que as permissões sejam definidas adequadamente) ou usando as teclas ssh. Um controle de acesso muito granular pode ser configurado usando 'gitosis', que é um complemento de terceiros.

Demora um pouco para se acostumar a trabalhar com o git quando você está acostumado a svn (acabamos de passar por isso no meu escritório), mas o git é muito mais poderoso.

Se você precisar de uma ótima explicação, confira http://progit.org - é uma cópia online completa de um livro de código aberto.

Aaron Brown
fonte
svn pode lidar com arquivos maiores que git
Joshua
Eu não sabia que o git tinha um tamanho máximo de arquivo - qual é o limite?
Aaron Brown
2
É principalmente porque, como o Git carrega a história com todas as cópias de trabalho, um arquivo grande e muito editado ocupa muito espaço. Se o arquivo grande é essencialmente imutável, está tudo bem
Phil Miller
Eu diria que o comentário de Josué é enganoso. Os arquivos com check-out são do mesmo tamanho para SVN e git. O que acontecerá é que, como o git mantém uma cópia das informações do repositório localmente, o espaço total em disco necessário para todos os arquivos e o histórico do repositório aumentará à medida que você edita os arquivos, mas para o SVN esse espaço é corrigido (pois o histórico do repositório não é armazenado localmente).
Walter
1

Na minha equipe, estamos no meio de mudar nossos sistemas de versão de controle de svn para git. O Git tem uma curva de aprendizado um pouco mais difícil, então comecei a me familiarizar com ele e depois a ensinar aos desenvolvedores como usá-lo. Eles precisam conhecer todas as vantagens de um sistema de versão de controle distribuído: várias ramificações, nenhum repositório central, velocidade, etc.

Como você, tínhamos um sistema para implantar nossos sites, para mantermos algo como um servidor central do git, no qual as alterações são extraídas e enviadas de e para as máquinas dos desenvolvedores. Nossos sites extraem as alterações desse "servidor central" e o restante do processo de implantação é semelhante ao do svn.

Tentamos não misturar os repositórios svn e git, começando a migrar nossos sites menores e criar novos repositórios git para sites principais, como se fossem uma nova versão. O acesso é gerenciado com chaves ssh. Também usamos o gitweb como interface da web (nosso sistema svn é baseado em http)

Está funcionando, não é uma mudança de um dia para o outro e estamos tentando que os desenvolvedores não tomem essa alteração como um aborrecimento, mas uma nova habilidade para aprender uma ferramenta que no final melhorará nosso próprio sistema.

hdanniel
fonte