Quero escolher um sistema de controle de versão para minha empresa. Até agora eu sei que tenho Git, Subversion e Mercurial.
Hoje em dia vejo que o Git é o mais usado, por isso fico pensando: haveria algum motivo específico para continuar usando o Subversion, ou devo ir diretamente para o Git?
version-control
git
svn
user1179459
fonte
fonte
Respostas:
SVN não está absolutamente morto. Ainda está em uso extremamente amplo e não chegará a lugar algum tão cedo. O SVN é muito mais simples de usar que o controle de versão distribuído, especialmente se você não estiver executando um projeto distribuído que precise de controle de versão distribuído.
Se você tiver apenas um repositório central (que é tudo o que sua empresa precisará se ainda for pequeno o suficiente para sobreviver sem o controle de origem), é muito mais simples usar o SVN para interagir com ele. Por exemplo, com o SVN, você pode obter alterações do repositório ou confirmar suas alterações locais, com uma única operação, enquanto o HG e o Git requerem duas ou três etapas para realizar o trabalho equivalente.
E com as revisões recentes, o SVN corrigiu muitos problemas de desempenho que fizeram as pessoas preferirem HG e Git. É significativamente mais rápido agora do que há alguns anos atrás e, neste momento, não há realmente uma boa razão para olhar o HG ou o Git para o seu projeto, a menos que você realmente precise dos recursos avançados do controle de versão distribuído.
fonte
As ferramentas do cliente ainda não foram mencionadas. Você certamente pode fazer tudo com um script de linha de comando, mas a integração com a GUI pode ser um aumento real da produtividade.
Trabalhamos principalmente com o Visual Studio; a integração no IDE é definitivamente melhor com o SVN do que com o Git no momento. Isso pode mudar no futuro, mas eu certamente consideraria isso em sua decisão, tanto quanto o controle de versão funciona.
Assim como tudo o mais, um sistema de controle de versão não é um objetivo em si, apenas uma ferramenta para levá-lo aonde você está indo. Escolha o que o levará mais rápido, com base na sua situação.
fonte
Sou fã do Git. Recentemente, tive que admitir que uma das desvantagens do Git é que ele identifica versões com hashes como opostas aos números de lançamento do svn. O número do release pode ser mais facilmente repassado por telefone ou algo assim.
E esse é o único profissional que posso imaginar. Se você realmente deseja confiar nesse recurso, pode tê-lo em um bazar VCS distribuído e / ou centralizado . No Git, existem tags que podem servir a esse propósito.
Enfim, eu simplesmente não conseguia imaginar o desenvolvimento sem a troca rápida de ramificação e a ocultação. Somente esses dois recursos superam o SVN, onde, até o momento, lembro que a mesma tarefa exigia a criação e o check-out de uma árvore inteira em diretórios separados para atingir o mesmo objetivo.
Os chamados "recursos avançados do controle de versão distribuído" vêm com o tempo e você não precisa aprendê-los desde o início. Não tenha medo deles. Eles estão aqui para ajudá-lo, não para atrapalhar. E não há problema em configurar um repositório central para um DVCS.
fonte
Com o SVN, você pode facilmente fazer check-out de partes de um repositório até o nível da pasta, enquanto que com o git, você obtém todo o repositório, incluindo todo o histórico.
Dependendo da situação, isso pode ter algumas vantagens para o SVN
(isso também tem algumas desvantagens, como o lixo ".svn" oculto na árvore de pastas).
fonte
"Se você tem uma tarefa que pode ser executada em seis horas, é melhor escrever uma ferramenta que faça isso em 20 minutos, mesmo quando a criação da ferramenta leva seis horas?"
O controle de versão distribuída é um animal diferente para enfrentar. Requer aprendizado substancial para cada desenvolvedor. Se você possui um buffer para acomodar o processo de aprendizado de cada desenvolvedor, deve passar para um bom sistema de controle de versão distribuído. Quando a fase de aprendizado terminar, o Controle de versão distribuído é muito melhor que o Controle de versão centralizado.
O controle de versão distribuído parece ser uma eventualidade. Está aqui para ficar por muito tempo, é melhor nos adaptarmos a ela mais cedo ou mais tarde. Lembro-me da mesma discussão quando o SVN era novo e as pessoas estavam acostumadas ao CVS, muitos argumentos foram dados para não usar o SVN, mas eventualmente o SVN se tornou o sistema de controle de versão mais popular.
Se a empresa estiver bem estabelecida com muito código-fonte no sistema de controle de versão existente, mudar para um novo sistema é uma grande tarefa, mas se a empresa for pequena ou iniciar, é muito fácil mudar para um novo controle de versão. Mas se você se ater a um controle de versão mais antigo (em uma nova configuração), atingirá o gargalo em algum lugar no futuro em que terá que, eventualmente, planejar uma migração de controle de versão.
Eu já vi muitos comentários profissionais do SVN, mas todos eles tendem a ser da natureza "SVN não é ruim", em vez de "SVN é melhor". Portanto, eu recomendo fortemente que você escolha um Controle de versão distribuído (como o Git) para o seu projeto.
EDIT Vantagens do GIT sobre SVN
Nenhum servidor dedicado é necessárioNa verdade, ambos podem ser usados sem um servidor.Alguém mencionou as ferramentas (para o visual studio) como um motivo para manter o SVN. http://gitscc.codeplex.com/ fornece suporte GIT para o Visual Studio.
fonte
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.
Eu discordo completamente disso. Pode ter alguns benefícios percebidos em algumas circunstâncias, mas algo tão simples quanto o número da versão no svn legível por humanos é um benefício enorme em muitas organizações.Além do suporte de ferramentas nos IDEs (que eu não uso) - na verdade não. É claro que o SVN pode ser mais familiar, mas esse é o único motivo, e eu achei o Hg e o Git muito fáceis (e muito rápidos) de aprender.
Sim, existem todos esses guias complexos que descrevem como o Git é trivial depois que você entende que os ramos são apenas endofuncores homeomórficos que mapeiam subvariedades de um espaço de Hilbert. 1 1
Eu não entendo isso. Mas você sabe o que? Não importa. Você não precisa conhecer nada disso para usar o Git.
Na maioria das vezes, o Git e o Hg são fáceis de usar e possuem vantagens definitivas sobre o SVN. É claro que o elefante na sala está se ramificando: os galhos funcionam apenas em Git e Hg. Por outro lado, no SVN eles são dolorosos na melhor das hipóteses e quebrados na pior (mesclando várias cabeças).
Claro que você ainda pode usar o SVN. Você ainda pode usar o Windows XP. No entanto, a maioria dos usuários que tentaram os dois concorda que uma das alternativas é muito superior.
1 Sim, entendi que isso é uma piada. Eu acho que.
fonte