Quais são as grandes diferenças entre TFVC (TFS Version Control) e Git para controle de origem ao usar o Visual Studio 2013?

101

Há toneladas de perguntas e respostas sobre Git versus TFVC Source Control, mas nenhuma resposta atual cobre a integração do Git no Team Foundation Server / Service que posso encontrar.

Estou começando o desenvolvimento de pastagens verdes usando uma ampla variedade de linguagens (C #, C ++, PHP, Javascript, MySSQL) usando o Visual Studio 2013. No futuro, haverá algum desenvolvimento para iOS. Estou muito familiarizado com SVN, VSS e TFVC para controle de origem. No entanto, nunca usei o Git. Prefiro o TFS para gerenciamento de processos / desenvolvimento ágil ... Não é perfeito, mas se integra bem ao Visual Studio.

Então, para me ajudar a decidir entre esses dois sistemas ...

Quais são as grandes diferenças entre TFVC e Git para controle de origem ao usar o Visual Studio 2013?

  • O único benefício no meu caso é um repositório local (sem dizer que é insignificante) e suporte ao desenvolvimento de iOS?
  • É a única desvantagem do Git, a interface de linha de comando (alguns diriam que não é uma desvantagem ;-P).
  • Você já experimentou a GUI do Visual Studio 2013 para Git? Isso é suficiente para oferecer suporte a ramificação / mesclagem básica sem a interface de linha de comando?
  • Existe um guia de inicialização detalhado para Git que mostra o Git sendo usado com o Visual Studio 2013? A Microsoft tem um vídeo para integrar um repositório Git existente ao Visual Studio 2013, mas estou procurando começar do zero com Git e VS 2013.

Não estou procurando um livro aqui, mas apenas alguns pontos e talvez alguns links relevantes de pessoas que usaram TFVC e Git.

Greg Grater
fonte

Respostas:

115

Quais são as grandes diferenças entre o TFS e o Git para controle de origem ao usar o VS 2013?

MSDN tem uma página muito extensa sobre todos os recursos e diferenças entre Team Foundation Version Control e Git .

O único benefício no meu caso é um repositório local (sem dizer que é insignificante) e suporte ao desenvolvimento de IoS?

Não, há muito mais, mas geralmente são cenários avançados do Git. Repo local, suporte offline e total fidelidade local no histórico são incrivelmente poderosos, você consegue isso logo de cara com o Visual Studio. Existem alguns outros recursos que também são ótimos! A capacidade de ramificar e mesclar de um repositório para outro é muito poderosa. Eu recomendo que você procure o livro Pro Git para eles. O Git no TFS é apenas mais um servidor git, ele possui praticamente todos os recursos que o Git padrão possui.

A capacidade de reescrever o histórico antes de mesclar permite remover ou combinar vários conjuntos de mudanças menores, para que o histórico seja mais limpo e mais fácil de ler como um ser humano.

É a única desvantagem do Git, a interface de linha de comando (alguns diriam que não é uma desvantagem ;-P).

O TFVC também tem uma linha de comando, as pessoas simplesmente não a usam. Para as pessoas que querem usar o Git e nunca fazem muito mais do que o TFVC, provavelmente não precisarão realmente deixar a IU, mas não obterão muitos recursos interessantes ...

Pode haver algumas outras desvantagens, principalmente devido ao fato de que é diferente do que as pessoas estão acostumadas. Não é muito difícil atirar no próprio pé se você não dedicar um tempo para aprender o que o git faz quando você faz as coisas. Coisas como Rebase e Squash são realmente poderosas e criam um histórico muito limpo, mas podem deixar as pessoas com o problema de que não podem mais se fundir se usadas incorretamente. O TFS tem a capacidade de colocar algumas configurações de segurança para retirar os direitos de tomar decisões muito estúpidas em um repositório git .

Um add-on muito legal para usuários Git no Windows é o PoSHGit . ele fornece autocompletar comandos na linha de comando do Powershell.

Você já experimentou a GUI do VS 2013 para Git? Isso é suficiente para oferecer suporte a ramificação / mesclagem básica sem a interface de linha de comando?

Ele tem tudo que você precisa para operações básicas. Mas você precisa ser capaz de visualizar os diferentes ramos para saber o que está acontecendo. Como o servidor Git e o repo local são apenas Git, qualquer cliente git pode ajudá-lo aqui. SourceTree é uma opção aqui. O cliente Git para Windows é outro.

Para operações padrão, check-in, check-out, mesclagem, ramificação (ou push, pull, fetch, commit, merge) a IU funciona muito bem.

Existe um guia de inicialização detalhado para Git que mostra o Git sendo usado com o VS 2013? A MS tem um vídeo para integrar um repositório Git existente ao VS 2013, mas estou procurando começar do zero com Git e VS 2013?

Começar com Git está disponível em vários lugares ... Estas são algumas opções:

Outras boas leituras:

E algumas ferramentas que valem a pena instalar:

Jessehouwing
fonte
3
O ALM Rangers lançará em breve a orientação dos usuários do Git para TFVC aqui: vsarbranchingguide.codeplex.com/releases . A versão Beta atual ainda não tem, espero que vá cair com o próximo lote :).
jessehouwing
8
Depois de quase um ano desde meu post original, pensei em avisar a todos que temos usado o VS2013 com Git com sucesso. Adoro a capacidade de criar vários repositórios em um único projeto de equipe. Tivemos alguns problemas na fusão. Em vários casos, a mesclagem automática escolhe incorretamente. Portanto, o que parece uma fusão bem-sucedida realmente não é. Nós agora verificamos todos os arquivos mesclados. Além disso, há certas instâncias em que a fusão bloqueia e gera um erro na interface do usuário do VS (conflito de fusão libgit2). Para consertar, temos que ir ao prompt do cmd e emitir um git pull (não é divertido).
Greg Grater
1
Eu sei que há uma correção para esse último erro como parte da atualização 4. E que houve casos em que as configurações da linha final diferiram entre os desenvolvedores que podem causar esses problemas.
jessehouwing
5
Estamos usando o VS 2013 com atualização 4 desde que ele saiu, meses atrás, e parece ter corrigido todos os nossos problemas de Git da GUI. Temos o hábito de extrair regularmente do servidor remoto, o que ajuda a manter nossos repositórios locais atualizados. Além disso, a MS tem passado por várias atualizações positivas no Backlog do Produto / Painéis de Tarefas ultimamente. Diretamente do quadro, agora você pode editar a descrição, atribuir, definir o status e ajustar a prioridade / ordem do item.
Greg Grater,
1
Os links "Git vs TFVC" estão direcionando para "Começar a usar o Git". Isso significa que é melhor usar o Git em vez do TFVC? ; D encontrou um novo link: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Martin Schneider
17

Para esclarecer algumas terminologias misturadas e confusas que são muito usadas com o TFS

O Team Foundation Server (TFS) é uma ferramenta de gerenciamento do ciclo de vida do aplicativo, que inclui um componente do sistema de controle de versão de origem (VCS) .

O componente VCS que o TFS usa é principalmente o Team Foundation Version Control (TFVC)

Então, a questão seria TFVC vs Git

(Na verdade, o TFS oferece suporte a Git como uma opção VCS .)

Então, a questão é: TFVC vs Git

jessehouwing tem uma ótima resposta que cobre isso em detalhes, portanto, consulte

Quanto à escolha de qual usar, na minha opinião o Git ganha

  1. É leve: simples de configurar e começar a usar.
  2. Sua natureza distribuída significa que é muito resistente a desastres, alguém sempre terá uma cópia do repo.
  3. O trabalho offline é simples, você está trabalhando com seu próprio repositório completo. Você pode confirmar alterações, reverter, histórico de navegação, etc. Você só precisa estar online quando quiser sincronizar com um repositório remoto.
  4. No TFS, não há uma maneira simples de salvar o estado de suas alterações (acréscimos, modificações, exclusões de arquivos) e alternar para outro estado de código. (Por exemplo, para trabalhar em dois recursos e alternar para frente e para trás). No git, você simplesmente verifica um branch diferente.
James Wierzba
fonte
1
O TFS tem branches e shelf sets (o que permite # 5) e você pode até configurar seus projetos para usar git se você realmente quiser. O TFS VCS também possui uma linha de comando para #. Não é leve, mas faz muito mais fora da caixa do que o git, pois tem um gerenciamento de projeto completo / rastreamento de bugs / rastreamento de trabalho / gerenciamento de versão / gerenciamento de construção / política de check-in / teste integrado.
Matthew Whited
@MatthewWhited Claro que é possível, mas é extremamente complicado comparado ao git, devido à sua implementação baseada em diretório versus implementação baseada em gráfico do git. Observe que afirmei que não há simplecomo fazer isso.
James Wierzba
@MatthewWhited Além disso, concordo com o conjunto de ferramentas de ciclo de vida do aplicativo extra, mas estou definindo o escopo de minha resposta apenas para soluções de controle de versão de código-fonte.
James Wierzba
1
IDK ... Acho o TFS muito simples de usar. Embora eu também não goste de todos os branches criados pelo GIT, pois torna mais complexo garantir que todos sejam o mesmo código com rotatividade rápida para alguns e lenta para outros.
Matthew Whited
Não sei. O GIT é simplesmente muito complicado para a tarefa que pretende realizar e muito não intuitivo (por que é uma solicitação pull e não uma solicitação push?!). O controle de origem do TF é muito simples e pode ser explicado a qualquer novo desenvolvedor em minha equipe em minutos. Também vejo o incentivo ao trabalho local como uma grande desvantagem dentro de uma equipe e até mesmo individualmente. Como você evita perder seu trabalho no Git sem sujar o projeto com ramos? (Para isso existem shelvesets em TFS - ON THE SERVER)
Cesar
4

É a única desvantagem do Git, a interface de linha de comando (alguns diriam que não é uma desvantagem ;-P).

Se você não se sentir confortável com a interface de linha de comando, existem vários front-ends de GUI disponíveis para Git. O próprio Git contém, na verdade, a ferramenta GUI do navegador do repositório chamada gitke git-gui- uma GUI para git. Depois, há aplicativos de terceiros, como git-cola , TortoiseGit e outros .

kralyk
fonte
2
É claro que o próprio Visual Studio fornece uma GUI para Git. Mas sempre há momentos em que você pode querer mergulhar na linha de comando para fazer coisas que de outra forma seriam impossíveis. Uma GUI que expõe todos os comandos Git é tão difícil quanto a linha de comando.
jessehouwing
Existem ferramentas de poder de linha de comando. Por exemplo, para eliminar completamente um ramo da existência.
Engenheiro