Porque é o Git melhor que o Subversion?

tenho usado Subversion durante alguns anos e depois de usar SourceSafe , adoro Subversion. Combinado com TortoiseSVN , não consigo imaginar como poderia ser melhor.

no entanto, há um número crescente de programadores que afirmam que o Subversion tem problemas e que devemos mudar-nos para a nova raça de sistemas de controlo de versões distribuídas, como o Git.

Como é que o Git melhora com o Subversion?

 393
Author: Peter Mortensen, 2008-08-04

30 answers

O Git não é melhor que o Subversion. Mas também não é pior. É diferente.

A principal diferença é que é descentralizada. Imagine que você é um desenvolvedor na estrada, você se desenvolve em seu laptop e você quer ter o controle de fonte para que você possa voltar 3 horas.

Com o Subversion, você tem um problema: o repositório SVN pode estar em um local que você não pode alcançar (em sua empresa, e você não tem internet no momento), você não pode se comprometer. Se você quiser fazer uma cópia de seu código, você tem que literalmente copiá-lo / colar.

Com o Git, você não tem este problema. Sua cópia local é um repositório, e você pode se comprometer com ele e obter todos os benefícios do controle de fonte. Quando você recuperar a conectividade ao repositório principal, você pode se comprometer contra ele.

Isto parece bom no início, mas tenha em mente a complexidade adicional desta abordagem. Parece ser a coisa" nova, brilhante, fixe". Não é de modo algum mau (há uma razão pela qual Linus o escreveu para o Desenvolvimento do Kernel Linux afinal), mas eu sinto que muitas pessoas pulam no trem de" controle de fonte distribuído " só porque é novo e é escrito por Linus Torvalds, sem realmente saber por que/se é melhor.

Subversion tem problemas, mas também o Git, Mercurial, CVS, TFS ou o que quer que seja.

Edit: então esta resposta tem agora um ano e ainda gera muitos upvotes, então pensei em adicionar mais algumas explicações. No último ano desde que escreveu isso, Git ganhou muito de impulso e apoio, especialmente desde sites como o GitHub realmente decolou. Estou a usar tanto o Git como o Subversion hoje em dia e gostaria de partilhar algumas ideias pessoais.

Em primeiro lugar, o Git pode ser muito confuso no início quando se trabalha descentralizado. O que é um comando? e como configurar corretamente o repositório inicial? são duas questões que surgem no início, especialmente em comparação com o simples SVN's "svnadmin create", git 's" git init " pode tomar os parâmetros -- bare e -- compartilhado que parece ser a maneira "adequada" de configurar um repositório centralizado. Há razões para isso, mas acrescenta complexidade. A documentação do comando" checkout "é muito confusa para as pessoas mudando sobre - a maneira" adequada "parece ser" git clone", enquanto" git checkout " parece mudar de branches. Git realmente brilha quando você está descentralizado. Tenho um servidor em casa e um portátil na estrada, e a SVN simplesmente não funciona bem aqui. Com a SVN, não posso ter controlo de fonte local se não estiver. conectado ao repositório (Sim, eu sei sobre SVK ou sobre maneiras de copiar o repo). Com o Git, esse é o modo padrão de qualquer maneira. É um comando extra embora (git commit commit commit commit commit local, enquanto git push origin master empurra o branch master para o remoto chamado "origin").

Como dito acima: o Git adiciona complexidade. Dois modos de criar repositórios, checkout vs. clone, commit vs. push... Você tem que saber quais comandos funcionam localmente e quais funcionam com "o servidor" (estou assumindo que a maioria das pessoas ainda como um "repositório-mestre" central).

Além disso, a ferramenta ainda é insuficiente, pelo menos nas janelas. Sim, há um Visual Studio Adinn, mas ainda uso o git bash com o msysgit.

O SVN tem a vantagem de ser muito mais simples de aprender: existe o seu repositório, todas as alterações para ele, se souber como criar, enviar e enviar e se estiver pronto para ir e conseguir obter coisas como ramificar, actualizar, etc. até logo.

O Git tem a vantagem de ser muito melhor. adequado se alguns programadores nem sempre estiverem ligados ao repositório-mestre. Além disso, é muito mais rápido que a SVN. E pelo que eu ouço, ramificar e fundir apoio é muito melhor (o que é de se esperar, já que estas são as principais razões que foi escrito).

Isto também explica porque é que ganha tanto buzz na Internet, como o Git é perfeitamente adequado para projectos de código aberto: apenas o bifurque, commit as suas alterações para o seu próprio Bifurcamento, e depois peça ao mantenedor do projecto original para puxar as suas alterações. Com o Git, isto funciona. A sério, experimenta no Github, é magia.

O que eu também vejo são pontes Git-SVN: o repositório central é um repo Subversion, mas os desenvolvedores trabalham localmente com o Git e a ponte, em seguida, empurra suas mudanças para o SVN.

[[1]} mas mesmo com esta adição prolongada, eu ainda mantenho a minha mensagem central: Git não é melhor ou pior, é apenas diferente. Se você tem a necessidade de "controle de fonte Offline" e a vontade de passar algum tempo extra aprendendo-o, é fantástico. Mas se você tem um controle de fonte estritamente centralizado e / ou está lutando para introduzir o Controle de fonte em primeiro lugar porque seus colegas de trabalho não estão interessados, então a simplicidade e excelente ferramenta (pelo menos nas janelas) de SVN shine.
 548
Author: Michael Stum, 2009-12-28 04:45:25
Com o Git, você pode fazer praticamente qualquer coisa offline, porque todo mundo tem seu próprio repositório. Fazer ramos e fundir ramos é muito fácil.

Mesmo que não tenha direitos de commit para um projecto, ainda pode ter o seu próprio repositório online e publicar "pedidos push" para as suas correcções. Todos os que gostam dos seus patches podem puxá-los para o seu projeto, incluindo os mantenedores oficiais.

É trivial criar um projecto, modificá-lo e ... continue a juntar-se nas correcções de erros do ramo principal.

O Git trabalha para os programadores do kernel Linux. Isso significa que é realmente rápido (tem que ser), e balança para milhares de contribuintes. O Git também usa menos espaço (até 30 vezes menos espaço para o repositório Mozilla).

O Git é muito flexível, muito TIMTOWTDI (há mais de uma maneira de o fazer). Você pode usar o fluxo de trabalho que quiser, e o Git irá apoiá-lo.

Finalmente, há o GitHub, um grande local para a hospedar os seus repositórios de Git.

Desvantagens do Git:

    É muito mais difícil de aprender, porque o Git tem mais conceitos e mais comandos.
  • as revisões não têm números de versão como no subversion
  • muitos comandos do Git são crípticos, e as mensagens de erro são muito pouco amigáveis para o utilizador
  • falta-lhe um bom GUI (como o grande TortoiseSVN)
 145
Author: Michiel de Mare, 2010-07-27 08:43:52

Outras respostas têm feito um bom trabalho de explicar as principais características do Git (que são grandes). Mas também há tantas maneiras que o Git se comporta melhor e ajuda a manter a minha vida mais sÃ. Aqui estão algumas das pequenas coisas:

  1. O Git tem um comando 'limpo'. O SVN necessita desesperadamente deste comando, considerando a frequência com que irá descarregar ficheiros extra no seu disco.
  2. O Git tem o comando 'bissect'. É bonito.
  3. a SVN cria .pastas de svn em cada uma pasta (O Git só cria um .git directory). Cada script que você escreve, e cada grep que você faz, terá que ser escrito para ignorar estes .directórios svn. Você também precisa de um comando inteiro ("exportação svn") apenas para obter uma cópia sà de seus arquivos.
  4. no SVN, cada ficheiro & pasta pode vir de uma revisão ou ramo diferente. No início, parece bom ter esta liberdade. Mas o que isso realmente significa é que há um milhão de maneiras diferentes para o seu check-out local ser completamente lixado ate. (por exemplo, se "SVN switch" falhar a meio, ou se você digitar um comando errado). E a pior parte é: se você alguma vez entrar em uma situação em que alguns de seus arquivos estão vindo de um lugar, e alguns deles de outro, o "status svn" vai lhe dizer que tudo é normal. Você vai precisar fazer "svn info" em cada arquivo/diretório para descobrir como as coisas são estranhas. Se "git status" lhe diz que as coisas são normais, então você pode confiar que as coisas realmente são normais.
  5. Tens de o fazer. diga ao SVN sempre que se mover ou apagar alguma coisa. O Git vai descobrir. Ignorar semântica é mais fácil no Git. Se você ignorar um padrão (como *.pyc), ele será ignorado para todos subdiretórios. (Mas se você realmente quiser ignorar algo para apenas um diretório, você pode). Com SVN, parece que não há nenhuma maneira fácil de ignorar um padrão em todas as subdiretórios.
  6. outro item que envolve ignorar ficheiros. O Git torna possível ter configurações de ignorar "privadas" (usando arquivo .git / info / exclude), que não afectará mais ninguém.
 110
Author: andy, 2009-01-31 21:24:12

"Por Que Git é melhor que X" descreve os vários prós e contras do Git vs Outros SCMs.

Brevemente:

  • git tracks content rather than files
  • Ramos são leves e a fusão é fácil, e quero dizer muito fácil.
  • É distribuído, basicamente cada repositório é um ramo. É muito mais fácil desenvolver-se simultaneamente e de forma colaborativa do que com a subversão, na minha opinião. Também faz Desenvolvimento offline possível.
  • isto não impõe qualquer fluxo de trabalho, como visto em o site acima ligado, existem muitos fluxos de trabalho possíveis com o Git. Um fluxo de trabalho do estilo Subversion é facilmente imitado.
  • Os repositórios Git são muito menores no tamanho do ficheiro do que os repositórios Subversion. Só há um".git "directory, as opposed to dozen of".repositórios do svn (note Subversion 1. 7 e superior agora usa uma única pasta como Pira-te.)
  • a área de encenação é fantástica, permite-lhe ver as alterações que irá enviar, Enviar alterações parciais e fazer várias outras coisas.
  • Esconder é inestimável quando você faz Desenvolvimento "caótico", ou simplesmente quer corrigir um bug enquanto você ainda está trabalhando em algo mais (em um ramo diferente).
  • você pode reescrever o histórico , o que é óptimo para preparar conjuntos de adesivos e corrigir os seus erros ( antes de publicar o autorizações)
  • ... e umlote mais.

Existem algumas desvantagens:

    Ainda não há muitos GUIs bons para isso. É novo e Subversion tem sido em torno de muito mais tempo, então isso é natural, pois há algumas interfaces em desenvolvimento. Alguns bons incluem TortoiseGit e GitHub para Mac .
  • ([67]}checkouts parciais/clones de repositórios não são possíveis no momento (eu li que está em desenvolvimento). No entanto, é suporte submódulo. O Git 1, 7+ suporta as verificações esparsas.
  • ([10]) pode ser mais difícil de aprender, mesmo que eu não achei que este fosse o caso (cerca de um ano atrás). O Git melhorou recentemente a sua interface e é bastante amigável.

No uso mais simplista, Subversion e Git são praticamente os mesmos. Não há muita diferença entre:

svn checkout svn://foo.com/bar bar
cd bar
# edit
svn commit -m "foo"

E

git clone [email protected]:foo/bar.git
cd bar
# edit
git commit -a -m "foo"
git push
Onde git realmente brilha é ramificar e trabalhar com outras pessoas.
 56
Author: sebnow, 2011-10-25 06:30:09
Google Tech Talk: Linus Torvalds on git

Http://www.youtube.com/watch?v=4XpnKHJAok8

A página de comparação do Git Wiki

Http://git.or.cz/gitwiki/GitSvnComparsion

 54
Author: ESV, 2008-08-03 22:44:26
Bem, está distribuído. Referenciais indicam que é consideravelmente mais rápido (dada a sua natureza distribuída, operações como diffs e logs são todos os locais, então é claro que é muito mais rápido, neste caso), e pastas de trabalho são menores (que ainda sopra minha mente).

Quando está a trabalhar no subversion, ou em qualquer outro sistema de controlo de versões cliente/servidor, você essencialmente cria cópias de trabalho na sua máquina por Verificação. Isto representa uma fotografia no tempo de como o repositório se parece. Actualiza a sua cópia de trabalho através de actualizações e actualiza o repositório através de commits.

Com um controle de Versão Distribuído, você não tem um instantâneo, mas sim toda a base de código. Queres fazer um diff com uma versão de 3 meses? Não há problema, a versão de 3 meses ainda está no seu computador. Isso não só significa que as coisas são muito mais rápidas, mas se você estiver desconectado do seu servidor central, você ainda pode fazer muitas das operações que você está acostumado. Outros palavras, você não tem apenas um instantâneo de uma dada revisão, mas toda a base de código. Seria de esperar que o Git ocupasse um monte de espaço no seu harddrive, mas a partir de alguns pontos de referência que vi, é preciso menos. Não me perguntes como. Quero dizer, foi construída pelo Linus, ele sabe uma coisa ou duas sobre filesystems, acho eu.
 26
Author: Karl Seguin, 2008-10-13 19:13:34
Os principais pontos que gosto nos DVCS são os seguintes:
    Podes cometer coisas quebradas. Não interessa, porque os outros não os vêem até publicares. O tempo de publicação é diferente do tempo de commit.
  1. por causa disso você pode se comprometer mais frequentemente.
  2. pode juntar a funcionalidade completa. Esta funcionalidade terá o seu próprio ramo. Todos os commits deste ramo estarão relacionados com esta funcionalidade. Você pode fazê-lo com um CVCS no entanto, com DVCS é o padrao.
  3. pode procurar no seu histórico (descobrir quando uma função mudou)
  4. você pode desfazer um puxão se alguém estragar o repositório principal, você não precisa corrigir os erros. Limpe a fusão.
  5. Quando você precisa de um controle de código em qualquer diretório Faça: git init . e você pode se comprometer, Desfazer mudanças, etc...
  6. É rápido (mesmo nas janelas)
A principal razão para um projecto relativamente grande é a melhoria da comunicação criada pelo ponto 3. Outros são simpáticos. Bonus.
 22
Author: Emmanuel Caradec, 2010-12-01 08:57:19
O engraçado é que ... : I host projects in Subversion Repos, but access them via the git Clone command.

Por Favor leia desenvolver com o Git num projecto de código do Google

Embora o código Google fale nativamente Subversion, você pode usar facilmente o Git durante o desenvolvimento. À procura do " git svn " sugere que esta prática é difundido, e nós também encorajamos você para experimentar.

Usar o Git num repositório Svn dá-me prestações:

  1. posso trabalhar distribuído {[17] } em vários máquinas para comando e extracção de: e para eles
  2. eu tenho um central backup/public repositório svn para os outros confira
  3. e são livres de usar o Git para o seu próprio
 15
Author: Andre Bossard, 2008-10-02 13:05:58

Todas as respostas aqui são como esperado, programador centrado, no entanto, o que acontece se a sua empresa usa controle de revisão fora do código fonte? Há uma abundância de documentos que não são código fonte que se beneficiam do controle de versão, e deve viver perto do código e não em outro CMS. A maioria dos programadores não trabalha isoladamente-trabalhamos para empresas como parte de uma equipe.

Com isso em mente, compare a facilidade de uso, em ferramentas de cliente e treinamento, entre Subversion e git. Não consigo ver um cenário em que qualquer sistema de controlo de revisão distribuído seja mais fácil de usar ou explicar a um não-programador. Eu adoraria ser provado errado, porque então eu seria capaz de avaliar git e realmente ter uma esperança de que ele seja aceito por pessoas que precisam de controle de versão que não são programadores.

Mesmo assim, se a direcção nos perguntasse por que razão deveríamos passar de um sistema centralizado para um sistema de controlo de revisão distribuído, seria difícil dar uma resposta honesta, porque nós não preciso.

Isenção de responsabilidade: I tornou-se interessado em Subversion cedo (em torno de v0.29) então, obviamente, eu sou preconceituoso, mas as empresas que eu trabalhei, desde que o tempo está se beneficiando do meu entusiasmo, porque eu tenho incentivado e apoiado a sua utilização. Suspeito que é assim que acontece com a maioria das empresas de software. Com tantos programadores pulando no Git bandwagon, eu me pergunto quantas empresas vão perder os benefícios de usar o controle de Versão fora do código fonte? Mesmo que tu ter sistemas separados para diferentes equipes, você está perdendo alguns dos benefícios, como (unificado) a integração de rastreamento de problemas, ao mesmo tempo em que aumenta os requisitos de manutenção, hardware e treinamento.

 11
Author: Si., 2010-03-15 23:38:20

Subversion ainda é um sistema de controle de versões muito mais usado, o que significa que ele tem melhor suporte de ferramentas. Você vai encontrar plugins SVN maduros para quase qualquer IDE , e há boas extensões explorer disponíveis (como TurtoiseSVN). Para além disso, tenho de concordar com o Michael: O Git não é melhor nem pior do que o Subversion, é diferente.

 9
Author: neu242, 2017-05-23 11:33:24

Uma das coisas sobre o SubVersion que me irrita é que ele coloca sua própria pasta em cada diretório de um projeto, enquanto que o git só coloca um no diretório raiz. Não é nada de especial, mas pequenas coisas como essas fazem sentido.

É claro que a subversão tem Tartaruga, O que é muito bom.
 8
Author: swilliams, 2008-08-22 15:24:44

David Richards WANdisco Blog on Subversion / GIT

O aparecimento do GIT trouxe consigo uma raça de fundamentalistas DVCS-os "Gitterons" - que pensam que qualquer outra coisa além do GIT é lixo. Os Gitterons parecem pensar que a engenharia de software acontece em sua própria ilha e muitas vezes esquecem que a maioria das organizações não empregam engenheiros seniores de software exclusivamente. Não faz mal, mas não é como o resto do mercado pensa, e fico feliz em prová-lo: o último olhar teve menos de três por cento do mercado, enquanto Subversion tem na região de cinco milhões de usuários e cerca de metade do mercado global. O problema que vimos foi que os Gitterons disparavam tiros (baratos) no Subversion. Tweets como " Subversion is so [slow / crappy / restrictive / doesn't smell good / looks at me in a funny way] and now I have GIT and [everything works in my life / my wife got pregnant / I got a girlfriend after 30 years of trying / I won six times running on the blackjack table]. Já percebeste.
 8
Author: Elaine Murphy, 2010-09-17 18:22:30

O Git também facilita a ramificação e a fusão. O Subversion 1.5 acabou de adicionar o acompanhamento da junção, mas o Git ainda é melhor. Com o Git branching é muito rápido e barato. Isso torna a criação de um branch para cada novo recurso mais viável. Os repositórios OH e Git são muito eficientes com espaço de armazenamento em comparação com o Subversion.

 7
Author: ejunker, 2010-07-28 18:30:37

É tudo sobre a facilidade de uso/passos necessários para fazer algo.

Se estou a desenvolver um único projecto no meu PC / laptop, o git é melhor, porque é muito mais fácil de configurar e usar. Você não precisa de um servidor, e você não precisa continuar escrevendo URL do repositório em quando você faz mescla.

Se fossem apenas duas pessoas, diria que o git também é mais fácil, porque podemos empurrar e puxar uns dos outros. Mas assim que ultrapassares isso, eu optaria pela subversão. ponto você precisa configurar um Servidor 'Dedicado' ou localização.

Você pode fazer isso tão bem com o git como com o SVN, mas os benefícios do Git são superados pela necessidade de fazer passos adicionais para sincronizar com um servidor central. Na SVN você apenas se compromete. No git você tem que git commit, em seguida, git push. O passo adicional fica irritante simplesmente porque você acaba fazendo isso muito.

A SVN também tem o benefício de melhores ferramentas GUI, no entanto o ecossistema git parece estar a recuperar rapidamente, por isso eu não me preocuparia com isto a longo prazo.

 6
Author: Orion Edwards, 2008-08-03 23:38:05

O Easy Git tem uma boa página comparando o uso real de O Git e o SVN, o que lhe dará uma ideia das coisas que o Git pode fazer (ou fazer mais facilmente) em comparação com o SVN. (Tecnicamente, isso é baseado no Git fácil, que é um invólucro leve em cima do Git.)

 6
Author: Pat Notz, 2008-08-22 15:19:57

O Git e os DVCS em geral são óptimos para programadores que fazem muitos códigos independentemente uns dos outros porque todos têm o seu próprio ramo. Mas se precisares de uma mudança de outra pessoa, ela tem de se comprometer com o seu repo local e depois tem de te empurrar esse changeset ou tens de o tirar dela.

O meu próprio raciocínio também me faz pensar que os DVCS tornam as coisas mais difíceis para a gestão de qualidade e de lançamento se você fizer coisas como lançamentos centralizados. Alguém tem de ser responsável por fazer esse push / pull do repositório de todos os outros, resolvendo qualquer conflito que teria sido resolvido no tempo inicial de commit antes, em seguida, fazendo a compilação, e, em seguida, ter todos os outros desenvolvedores re-sincronizar seus repos. Tudo isso pode ser tratado com processos humanos, é claro; DVCS apenas quebraram algo que foi fixado pelo controle centralizado de versão, a fim de fornecer algumas novas conveniências.
 5
Author: jaredg, 2008-08-03 23:08:23
Eu gosto do Git porque ele realmente ajuda o desenvolvedor de comunicação a desenvolver em uma equipe média a grande. Como um sistema de controle de versão distribuído, através de seu sistema push/pull, ele ajuda os desenvolvedores a criar um eco-sistema de código fonte que ajuda a gerenciar um grande grupo de desenvolvedores trabalhando em um único projeto.

Por exemplo, diz que confias em 5 programadores e só tiras códigos do repositório deles. Cada um desses desenvolvedores tem sua própria rede de confiança de onde eles puxam códigos. Assim o desenvolvimento é baseado no tecido de confiança dos desenvolvedores onde a responsabilidade do código é compartilhada entre a comunidade de desenvolvimento.

É claro que há outros benefícios que são mencionados em outras respostas aqui.
 5
Author: Mozammel, 2010-07-26 08:52:15
Algumas respostas já foram referidas, mas gostaria de deixar dois pontos explícitos:

1) a capacidade de fazer commits selectivos (por exemplo, git add --patch). Se o seu directório de trabalho contém várias alterações que não fazem parte da mesma alteração lógica, o Git torna muito fácil fazer um commit que inclui apenas uma parte das alterações. Com subversão, é difícil.

2) a capacidade de se comprometer sem tornar a mudança pública. No Subversion, qualquer persistência é imediatamente pública, e assim irrevogável. Isso limita muito a capacidade do desenvolvedor de "cometer cedo, cometer muitas vezes".

O Git é mais do que apenas um VCS; é também uma ferramenta para desenvolver patches. Subversion é apenas um VCS.

 4
Author: William Pursell, 2010-07-24 09:17:43
Acho que Subversion está bem.. até começares a fundir-te.. ou fazer algo complicado.. ou fazer qualquer coisa Subversion pensa que é complicado (como fazer consultas para descobrir quais ramos se confundiram com um arquivo em particular, onde uma mudança realmente vem, detectando copy&pastes, etc)...

Discordo da resposta vencedora, dizendo que o principal benefício {[[2]} do GIT é o trabalho offline - é certamente útil, mas é mais como um extra para o meu caso de uso. SVK pode funcionar offline too, still there is no question for me which one to invest my learning time in).

É que é incrivelmente poderoso e rápido e, bem-depois de se acostumar com os conceitos - muito útil (sim, nesse sentido: fácil de usar).

Para mais detalhes sobre uma história de fusão, veja isto. : usando o git-svn (ou similar) * apenas* para ajudar com uma junção de svn?
 4
Author: inger, 2017-05-23 11:47:36

Graças ao facto de não precisar de comunicar com um servidor central constantemente, praticamente todos os comandos funcionam em menos de um segundo (obviamente o git push/pull/fetch são mais lentos simplesmente porque têm de initalizar as ligações SSH). A ramificação é muito mais fácil (um comando simples para ramificar, um comando simples para juntar)

 3
Author: dbr, 2008-08-30 12:01:09
Adoro ser capaz de gerir os ramos locais do meu código-fonte em Git sem sujar a água do repositório central. Em muitos casos eu vou checkout código do servidor Subversion e executar um repositório Git local apenas para ser capaz de fazer isso. Também é ótimo que inicializar um repositório Git não polui o sistema de arquivos com um monte de irritantes .pastas svn por todo o lado.

E quanto ao Suporte de ferramentas do Windows, o TortoiseGit lida muito bem com o básico, mas eu ainda prefiro a linha de comando a menos que queira ver o registo. Gosto muito da forma como a tartaruga{Git|SVN} ajuda ao ler os registos de commits.

 3
Author: Matt Hulse, 2010-07-22 17:30:34
Esta é a pergunta errada a fazer. É muito fácil concentrar-se nas verrugas do git e formular um argumento sobre o porquê da subversão ser aparentemente melhor, pelo menos para alguns casos de uso. O fato de que o git foi originalmente projetado como um conjunto de baixo nível de controle de versões e tem uma interface barroca orientada a desenvolvedores linux torna mais fácil para as guerras sagradas ganhar tração e legitimidade percebida. Os defensores do Git batem no tambor com milhões de vantagens de fluxo de trabalho, que os tipos da svn proclama desnecessário. Muito em breve todo o debate é enquadrado como centralizado vs distribuído, que serve os interesses da comunidade ferramenta svn empresa. Estas empresas, que normalmente publicam os artigos mais convincentes sobre a superioridade da subversion na empresa, dependem da percepção de insegurança da git e da capacidade de preparação da svn para o sucesso a longo prazo dos seus produtos.

Mas aqui está o problema: a subversão é um beco sem saída arquitectónico.

Considerando que você pode pegar o git e construir uma substituição subversion centralizada com bastante facilidade, apesar de estar por mais do dobro do tempo o svn nunca foi capaz de obter até mesmo o básico de rastreamento de merge trabalhando em qualquer lugar perto, bem como ele faz no git. Uma razão básica para isso é a decisão de projeto de fazer filiais o mesmo que diretórios. Eu não sei porque eles foram por aqui originalmente, certamente faz check-out parcial muito simples. Infelizmente, também torna impossível rastrear história como deve ser. Agora, obviamente, você deve usar Convenções de layout do repositório subversion para separar ramos de diretórios regulares, e o svn usa algumas heurísticas para fazer as coisas funcionarem para os casos de uso diário. Mas tudo isso é apenas um papel sobre uma decisão de projeto muito pobre e limitante de baixo nível. Ser capaz de fazer uma diferença de repositório (em vez de diferenças de diretório-sábio) é uma funcionalidade básica e crítica para um sistema de controle de versão, e simplifica muito os internos, tornando-se é possível construir recursos mais inteligentes e úteis em cima dele. Você pode ver na quantidade de esforço que foi colocado em estender a subversão, e ainda assim, quão longe Está da atual colheita de VCSes modernos em termos de operações fundamentais como a resolução de merge.

Aqui está o meu conselho de coração e agnóstico para quem ainda acredita que a subversão é boa o suficiente para um futuro previsível. Subversion nunca alcançará as novas raças de VCSes que aprenderam dos erros de RCS e CVS; é uma impossibilidade técnica a menos que eles retoolem o modelo do repositório do zero, mas então não seria realmente svn, não é? Independentemente do quanto você acha que não tem as capacidades de um VCS Moderno, sua ignorância não o protegerá das armadilhas do Subversion, muitas das quais são situações que são impossíveis ou facilmente resolvidas em outros sistemas.

É extremamente raro que a inferioridade técnica de uma solução seja tão clara como é com svn, certamente eu nunca diria tal opinião sobre win-vs-linux ou Emacs-vs-vi, mas neste caso é tão claro, e o controle de fonte é uma ferramenta tão fundamental no arsenal do desenvolvedor, que eu sinto que deve ser declarado inequivocamente. Independentemente do requisito de usar svn por razões organizacionais, eu imploro a todos os usuários svn para não deixar sua mente lógica construir uma falsa crença de que VCSes mais modernos são apenas úteis para grandes projetos de código aberto. Independentemente da natureza do seu trabalho de desenvolvimento, se você é um programador, você será um programador mais eficaz se você aprender a usar VCSes melhor projetados, seja Git, Mercurial, Darcs, ou muitos outros.

 3
Author: gtd, 2011-05-29 17:30:50

O Subversion é muito fácil de usar. Eu nunca encontrei nos últimos anos um problema ou que algo não funciona como esperado. Também existem muitas ferramentas GUI excelentes e o suporte para a integração SVN é grande.

Com o Git obtém-se um VCS mais flexível. Você pode usá-lo da mesma forma como o SVN com um repositório remoto onde você commit todas as alterações. Mas você também pode usá-lo principalmente offline e só empurrar as mudanças de vez em quando para o repositório remoto. Mas o Git é mais complexo e tem uma curva de aprendizagem mais íngreme. Eu me encontrei na primeira vez cometendo com filiais erradas, criando filiais indiretamente ou obter mensagens de erro com pouca informação sobre o erro e onde eu devo procurar com o Google para obter melhores informações. Algumas coisas fáceis como a substituição de marcadores ($Id$) não funciona, mas o GIT tem um mecanismo de filtragem e gancho muito flexível para fundir os próprios scripts e assim você começa todas as coisas que você precisa e mais, mas ele precisa de mais tempo e leitura da documentação ;)

Se você trabalha na maioria offline com o seu repositório local, você não tem backup se algo está perdido na sua máquina local. Com o SVN você está trabalhando principalmente com um repositório remoto que também é ao mesmo tempo o seu backup em outro servidor... Git pode trabalhar da mesma forma, mas este não era o objetivo principal de Linus para ter algo como SVN2. Ele foi projetado para os desenvolvedores do kernel Linux e as necessidades de um sistema de controle de Versão Distribuído.

O Git é melhor que o SVN? Programador que só precisa de algum histórico de versão e um mecanismo de backup têm uma vida boa e fácil com SVN. Os desenvolvedores que trabalham frequentemente com filiais, testando mais versões ao mesmo tempo ou trabalhando principalmente offline podem se beneficiar das características do Git. Existem algumas características muito úteis, como o stashing não encontrado com SVN que pode tornar a vida mais fácil. Mas do outro lado nem todas as pessoas vão precisar de todas as características. Por isso não consigo ver os mortos da SVN.

O Git precisa de documentação melhor e do erro a apresentação de relatórios deve ser mais útil. Também os GUIs úteis existentes são raramente. Desta vez eu só encontrei 1 GUI Para Linux com suporte da maioria dos recursos Git (git-cola). A integração do Eclipse está a funcionar, mas não é oficial e não existe um site oficial de actualização (apenas algum site externo de actualização com compilações periódicas do tronco http://www.jgit.org/updates Assim, a maneira mais preferida de usar o Git hoje em dia é a linha de comandos.

 2
Author: devarni, 2009-10-13 13:21:19

Eric Sink do SourceGear escreveu uma série de artigos sobre diferenças entre sistemas de controlo de versões distribuídos e não distribuídos. Ele compara prós e contras dos sistemas de controle de versão mais populares. Leitura muito interessante.
Artigos podem ser encontrados em seu blog, www.ericsink.com:

 2
Author: Peter Mortensen, 2010-08-06 08:48:21

Para as pessoas que procuram uma boa GUI Git, Syntevo SmartGit pode ser uma boa solução. Seu proprietário, mas livre para uso não-comercial, funciona no Windows / Mac / Linux e até mesmo suporta SVN usando algum tipo de Ponte git-svn, eu acho.

 2
Author: jotik, 2011-03-09 14:05:56

Http://subversion.wandisco.com/component/content/article/1/40.html

Eu acho que é bastante seguro dizer que entre os desenvolvedores, o argumento SVN Vs. Git tem sido enraivecido por algum tempo agora, com todos tendo sua própria visão sobre o que é melhor. Isso foi até referido nas perguntas durante o nosso Webinar sobre Subversion em 2010 e mais além.

Hyrum Wright, o nosso Director do Open Source e o Presidente da Subversion Corporation fala sobre o ... diferenças entre Subversion e Git, juntamente com outros sistemas de controle de versão distribuídos (DVCS).

Ele também fala sobre as próximas mudanças no Subversion, como o Working Copy Next Generation (WC-NG), que ele acredita que fará com que vários usuários do Git se convertam de volta ao Subversion.

Tenha um relógio do seu vídeo e deixe-nos saber o que você acha, comentando neste blog, ou postando em nossos fóruns. O registo é simples e só demora um momento!

 1
Author: user270537, 2010-02-10 18:51:32

O Git no Windows está bastante bem suportado agora.

Confira GitExtensions = http://code.google.com/p/gitextensions/

E o manual para uma melhor experiência com o Windows Git.

 1
Author: 2 revs, 2 users 89%user267751, 2010-02-15 14:24:29
Tenho vivido em Git land ultimamente, e gosto dele para projetos pessoais, mas não seria capaz de mudar projetos de trabalho para ele ainda a partir da subversão dada a mudança de pensamento necessária da equipe, sem benefícios prementes. Além disso, o maior projeto que realizamos internamente é extremamente dependente de svn:externals que, pelo que vi até agora, não funciona tão bem e perfeitamente no Git.
 1
Author: Peter Mortensen, 2010-07-21 12:57:07

Primeiro, o controlo simultâneo de versões parece ser um problema fácil de resolver. Não é nada. Assim...

A SVN não é intuitiva. Git é ainda pior. isso pode ser porque os desenvolvedores, que gostam de problemas difíceis como controle de versão concorrente, não têm muito interesse em fazer um bom UI. [/sarcástico-especulação]

Os apoiantes da SVN acham que não precisam de um sistema de controlo de versões distribuído. Também pensei isso.Mas agora que usamos o Git exclusivamente, sou um crente. Agora o controle de versão funciona para mim e para a equipe / projeto em vez de apenas trabalhar para o projeto. Quando preciso de um ramo, eu branco. Às vezes é um branch que tem um branch correspondente no servidor, e às vezes não tem. Sem mencionar todas as outras vantagens que eu vou ter que estudar acima (graças em parte à Arcana e absurda falta de UI que é um sistema moderno de controle de versão).
 1
Author: Yar, 2010-07-22 09:40:12

Por Que Eu acho que Subversion é melhor do que Git (pelo menos para os projetos em que eu trabalho), principalmente devido à sua usabilidade, e fluxo de trabalho mais simples:

Http://www.databasesandlife.com/why-subversion-is-better-than-git/

 1
Author: Adrian Smith, 2010-10-22 16:25:05