Enquanto os repositórios Subversion (SVN) são semelhantes aos repositórios Git, a diferença entre os dois é bastante sutil. Ambos são os dois sistemas de controle de versão mais populares disponíveis, usados para rastrear alterações no código-fonte ao longo do tempo, mas eles têm seu quinhão de diferenças em termos de arquitetura. Eles podem fazer coisas semelhantes, como etiquetar e ramificar, mas diferem dramaticamente na maneira como armazenam as coisas. O Git é um sistema de controle de versão gratuito e de código aberto distribuído sob a licença do GNU, enquanto o SVN é um sistema de controle de versão centralizado distribuído sob a licença de código aberto. Este artigo destaca algumas diferenças importantes entre os dois.
Inicialmente criado para o desenvolvimento do kernel Linux por Linus Torvalds usando um DVCS proprietário chamado BitKeeper, o Git introduziu um novo nível de codificação colaborativa entre a comunidade de desenvolvedores. O Git é uma das ferramentas mais populares usadas em quase milhares de projetos e adotadas por milhões de desenvolvedores em todo o mundo. É um sistema de controle de versão distribuído projetado para acompanhar as alterações no código-fonte ao longo do tempo, mantendo um tipo especial de banco de dados chamado repositório local, que é o clone exato do repositório central, que permite aos usuários armazenar históricos de versões atuais e anteriores de arquivos em suas máquinas locais. A principal vantagem do Git é que ele não depende do acesso à rede para suas operações, o que garante a integridade do conteúdo.
O Subversion, ou SVN, é um sistema de controle de versão gratuito e de código aberto usado para gerenciar e armazenar arquivos e as alterações feitas neles ao longo do tempo em um servidor centralizado. É distribuído sob a licença do Apache como código aberto. Fundada pela CollabNet em 2000, a SVN existe há mais de uma década e continua a ser adotada amplamente como uma ferramenta bem-sucedida de VCS na comunidade de código aberto e no ecossistema corporativo. Diferentemente do Git, o SVN armazena o histórico de versões dos arquivos em um servidor centralizado. Ele cria ramificações dentro do repositório central colocado como diretórios. Quando um usuário deseja fazer alterações no código, ele faz isso a partir de suas próprias máquinas e, quando termina, envia o código de volta ao repositório central.
Embora os dois sejam os dois softwares de sistema de controle de versão de código aberto mais populares usados para acompanhar as alterações no código-fonte ao longo do tempo, eles são muito diferentes um do outro. Git é um sistema de controle de versão distribuído que usa um sistema distribuído para catalogar todas as versões de um arquivo de projeto. O Subversion (svn), por outro lado, é um sistema centralizado de controle de versão e revisão distribuído sob a licença de código aberto.
Git é um sistema de controle de versão distribuído, que significa que, em vez de usar um servidor centralizado para armazenar e gerenciar o código-fonte, ele cria um repositório local que nada mais é do que o clone do repositório central, que permite que os desenvolvedores façam alterações localmente. O repositório local consiste em tudo, de históricos de versões a ramificações e metadados, tudo. Por outro lado, quando os desenvolvedores se comprometem com a subversão, eles enviam todas as alterações de volta ao repositório central.
Quando os usuários fazem check-out de um repositório no Git, eles obtêm um clone completo de tudo que é armazenado em suas máquinas locais. Eles precisam "enviar" as alterações feitas no código para compartilhá-lo com outros usuários ou "puxar" para sincronizá-lo com um repositório remoto. Isso facilita a colaboração de vários usuários sem perturbar o repositório central. No subversion, todo usuário compartilha o mesmo repositório central via ramificação.
O Git é o menos confiável no acesso à rede, pois a maioria de suas operações está disponível offline. Os usuários podem mesclar, refazer e ramificar sem se preocupar com o acesso à rede. No entanto, a rede é necessária apenas quando os usuários precisam sincronizar seu repositório local com o repositório central. O Subversion, por outro lado, requer acesso à rede para a maioria de suas operações, porque não possui repositório local para armazenar as alterações localmente..
Tudo no Git é resumido em criptografia usando o algoritmo de hash SHA-1 antes de ser armazenado, o que garante a robustez do conteúdo do código. Torna praticamente impossível alterar o conteúdo do código sem o Git saber sobre ele. O Subversion, pelo contrário, não possui hash de conteúdo, o que significa que não garante a integridade do conteúdo no caso de falha na rede ou no disco. O Git é sem dúvida a melhor alternativa quando se trata de integridade do conteúdo.
O Git é sem dúvida um dos sistemas de controle de versão mais populares e amplamente utilizados disponíveis, projetado especificamente para lidar com tudo, de projetos pequenos a grandes. É um sistema de controle de versão distribuído de código aberto usado para armazenar e manter alterações no código fonte ao longo do tempo em um repositório local, que nada mais é do que o clone do repositório central. O SVN também é um sistema de controle de versão usado basicamente para o mesmo objetivo, com exceção de como eles armazenam as coisas. Diferentemente do Git, o SVN usa um servidor centralizado para manter as versões atuais e anteriores de arquivos, como código fonte, documentação, páginas da web etc. Uma grande vantagem do Git sobre o SVN é que os usuários do Git podem ter o controle de versão sem se preocupar com a rede. acesso altamente improvável no SVN.