Como escolher o controle de versão certo para seu projeto

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Se o projeto de software for grande ou pequeno, o uso do controle de versão assim que possível será uma boa ideia. O Azure Repos dá suporte a dois tipos de controle de versão, Git e Controle de Versão do Team Foundation (TFVC).

Qual sistema de controle de versão devo usar?

O Git é o provedor de controle de versão padrão para novos projetos. Você deve usar o Git para controle de versão em seus projetos e começar a mover seus projetos TFVC existentes para o Git. O TFVC é considerado o recurso concluído. O Azure DevOps manterá a compatibilidade com o TFVC, mas o Git receberá todo o investimento futuro.

Você pode usar repositórios TFVC com o Git no mesmo projeto, portanto, é fácil adicionar o TFVC mais tarde se precisar de controle de versão centralizado. Para configurar um novo tipo de repositório para um projeto existente, use estas instruções.

Git (distribuído)

O Git é um sistema de controle de versão distribuído. Cada desenvolvedor tem uma cópia do repositório de origem em seu computador de desenvolvimento. Os desenvolvedores podem confirmar cada conjunto de alterações em seu computador de desenvolvimento e executar operações de controle de versão, como histórico e comparação, sem uma conexão de rede. As ramificações são leves. Quando precisar alternar contextos, você poderá criar uma ramificação local particular. É possível mudar rapidamente de uma ramificação para outra para alternar de forma dinâmica entre diferentes variações de sua base de código. Posteriormente, você pode mesclar, publicar ou descartar a ramificação.

Observação

O Git no Visual Studio, Azure DevOps Services e Azure DevOps Server é o Git padrão. Você pode usar o Visual Studio com serviços Git de terceiros e também pode usar clientes Git de terceiros com o Azure DevOps Server.

Para saber mais, consulte Git e Azure Repos.

TFVC (centralizado)

O Controle de Versão do Team Foundation (TFVC) é um sistema de controle de versão centralizado. Normalmente, os membros da equipe têm somente uma versão de cada arquivo nos computadores de desenvolvimento. Os dados históricos são mantidos somente no servidor. As ramificações são baseadas em caminho e criadas no servidor.

O TFVC tem dois modelos de fluxo de trabalho:

  • Workspaces do servidor – Antes de fazer alterações, os membros da equipe fazem check-out publicamente dos arquivos. A maioria das operações exige que os desenvolvedores estejam conectados ao servidor. Esse sistema facilita o bloqueio de fluxos de trabalho. Outros sistemas que funcionam dessa forma incluem o Visual Source Safe, o Perforce e o CVS. Com workspaces de servidor, é possível escalar verticalmente até bases de código enormes com milhões de arquivos por ramificação e arquivos binários grandes.

  • Workspaces locais - cada membro da equipe usa uma cópia da versão mais recente da base de código e trabalha off-line conforme necessário. Os desenvolvedores fazem o check-in de suas alterações e resolvem os conflitos conforme necessário. Outro sistema que funciona dessa maneira é o Subversion.

Para saber mais, confira O que é o Controle de Versão do Team Foundation?

Migrar do TFVC para o Git

Se você tiver repositórios TFVC existentes, poderá migrá-los para repositórios Git usando a ferramenta git-tfs. A ferramenta permite migrar um repositório TFVC para um repositório Git em apenas alguns comandos.

Recursos do Git e do TFVC

A tabela a seguir fornece um resumo de como o TFVC e o Git dão suporte aos recursos principais do controle de versão.

Recurso

TFVC

Git


Alterações

Os membros da equipe podem alterar simultaneamente os arquivos em seus computadores de desenvolvimento. Você carrega (faz check-in) conjuntos de alterações no servidor ao criá-los. É possível carregar suas alterações a qualquer momento. No entanto, você pode ser interrompido por conflitos.

Você pode alterar o comentário de um conjunto de alterações depois de fazer o check-in. É possível vincular conjuntos de alterações a itens de trabalho e associá-los às compilações concluídas.

Os membros da equipe podem alterar simultaneamente os arquivos em seus computadores de desenvolvimento. Você cria confirmações em seu computador de desenvolvimento independentemente de contribuir com elas para a equipe. Quando estiver preparado, você deve extrair as confirmações mais recentes antes de carregar (enviar por push) as suas para o servidor. Na extração, você pode ser interrompido por conflitos.

Você pode modificar a confirmação local mais recente. Você não pode alterar confirmações mais antigas. É possível vincular confirmações a itens de trabalho e associá-las às compilações concluídas.

É possível modificar e combinar confirmações locais no prompt de comando.

Ramificação

As ramificações baseadas em caminho são usadas, em sua maioria, como construções duradouras para isolar o risco de alteração entre equipes e versões do recurso. Normalmente, os membros da equipe configuram um workspace adicional para cada ramificação em que trabalham.

As alterações em cada ramificação são independentes umas das outras para que você não tenha de fazer o check-in delas antes de mudar de uma ramificação para outra. A mesclagem entre ramificações irmãs exige uma mesclagem sem base.

Você pode obter as visualizações das estruturas de sua ramificação e onde seus conjuntos de alterações foram mesclados.

Consulte Usar ramificações para isolar riscos no Controle de Versão do Team Foundation.

A ramificação é leve e independente de caminho. Muitos desenvolvedores criam uma ramificação para cada novo recurso que estiverem codificando, algumas vezes diariamente. É possível mudar rapidamente de uma ramificação para outra para alternar de forma dinâmica entre diferentes variações de sua base de código. Você pode criar ramificações que existem somente em seu computador de desenvolvimento e compartilhá-las quando estiver preparado.
É necessário confirmar, ramificar, ocultar ou desfazer alterações antes de alternar as ramificações. A mesclagem é simples e independente da confirmação em que a ramificação se baseia. Você pode comparar ramificações para ver quais confirmações existem em quais ramificações.

Consulte Usar ramificações Git para alternar contextos, suspender trabalhos e isolar riscos.

Resolução de conflitos

Talvez seja necessário resolver conflitos ao obter, fazer check-in, mesclar ou desfazer check-in particular. É possível resolver todos os tipos de conflitos no Visual Studio.

Talvez seja necessário resolver conflitos ao receber ou mesclar. Você pode resolver conflitos de conteúdo no Visual Studio ou no prompt de comando.

Armazenamento de arquivos

Você pode fazer check-in de arquivos binários grandes. Você também pode usar o NuGet em combinação ou como uma alternativa.

Você pode marcar em arquivos binários pequenos como faria com arquivos regulares. Ao trabalhar com arquivos binários grandes, use o Git-LFS para armazenar arquivos binários grandes em Azure Repos.

Histórico

O histórico do arquivo não é replicado no computador de desenvolvimento cliente e, portanto, pode ser exibido somente quando você estiver conectado ao servidor. É possível exibir o histórico no Visual Studio e no portal da Web. Você pode anotar os arquivos para ver quem alterou uma linha e quando ela foi alterada.

O histórico do arquivo é replicado no computador de desenvolvimento cliente e pode ser exibido mesmo quando você não está conectado ao servidor. É possível exibir o histórico no Visual Studio e no portal da Web. Você pode anotar os arquivos para ver quem alterou uma linha e quando ela foi alterada.

Marcar seus arquivos

Você pode aplicar rótulos a uma versão de um ou mais arquivos do Visual Studio ou do prompt de comando. Cada arquivo pode ter o rótulo aplicado a uma versão diferente.

Você pode aplicar marcas do prompt de comando a confirmações individuais. {1>Exibir marcas na janela de histórico do Visual Studio<1}.

Reverter alterações

Você pode reverter uma confirmação.

Escala

É possível trabalhar em projetos de escala pequena ou muito grande usando workspaces locais. Oferece suporte a projetos de larga escala (milhões de arquivos por ramificação e arquivos binários grandes) usando workspaces de servidor.

É possível iniciar projetos pequenos rapidamente. É possível dimensionar até projetos muito grandes, mas é necessário planejar com antecedência para modularizar sua base de código. Você pode criar vários repositórios em um projeto.

Servidor

A tabela a seguir resume os recursos disponíveis com os servidores com suporte para cada um dos sistemas de controle de versão.

Recurso

TFVC

Git


Servidor

Serviços do Azure DevOps, Servidor do Azure DevOps

Serviços do Azure DevOps, Servidor do Azure DevOps e serviços de terceiros do Git

Alertas

Os membros da equipe podem receber alertas por email quando confirmações são enviadas por push para o servidor.

Auditabilidade

Como sua equipe faz check-in de todo o trabalho em um sistema centralizado, você pode identificar qual usuário fez check-in em um conjunto de alterações e usar comparação para ver o que foi alterado. Examinando um arquivo, você pode anotá-lo para identificar quem alterou um bloco de código e quando isso foi feito.

Você pode identificar qual usuário enviou uma confirmação por push. (Qualquer pessoa pode reivindicar qualquer identidade como o autor ou a pessoa que fez a confirmação.) Você pode identificar quando foram feitas alterações e o que foi alterado usando histórico, comparação e anotação.

Compilações (automatizadas pelo TFBuild)

Você pode usar todos os recursos do TFBuild para compilar qualquer combinação de conteúdo desejada dentro da coleção de projetos.

Você pode usar a maioria dos recursos do TFBuild para compilar um projeto por vez e um ou mais repositórios por vez.

Revisões de código

Consulte Um dia na vida de um desenvolvedor de DevOps: suspender trabalho, corrigir um bug e conduzir uma revisão de código. Para discussões mais leves, você também pode comentar e enviar e-mails sobre um conjunto de alterações do portal da Web.

Consulte Revisar solicitações de pull. Para discussões mais leves, você também pode comentar e enviar e-mails sobre uma confirmação do portal da Web.

Arquivos

Cada projeto de equipe contém todos os arquivos em um único diretório raiz (por exemplo: $/FabrikamTFVC). Você pode aplicar permissões no nível de arquivo. É possível bloquear arquivos.

Você pode procurar seus arquivos no portal da Web usando o Gerenciador do Controle do Código-Fonte no Visual Studio.

Seu projeto existe somente em um servidor.

Cada projeto pode conter um ou mais repositórios Git, e cada repositório Git pode conter uma ou mais ramificações. As permissões mais granulares que você pode aplicar são para um repositório ou uma ramificação. Os arquivos não podem ser bloqueados.

Você pode procurar seus arquivos no portal da Web.

Você pode enviar confirmações por push para vários repositórios remotos, por exemplo, para o repositório de projetos e para o site hospedado no Azure.

Restrições de qualidade

Você pode usar compilações de CI (integração contínua), compilações de check-in fechadas e políticas de check-in.

Você pode usar compilações de CI e compilações de check-in fechadas por meio de políticas de ramificação.

Cliente

A tabela a seguir resume os recursos com suporte do cliente disponíveis dependendo do sistema de controle de versão selecionado.

Recurso

TFVC

Git


Software cliente

Visual Studio

Visual Studio, Visual Studio Code, Eclipse e outras ferramentas de terceiros

Arquivos

Você pode procurar seus arquivos usando o Gerenciador do Controle do Código-Fonte no Visual Studio, o Explorador de Arquivos do Windows ou o prompt de comando.

Você pode procurar seus arquivos usando o Explorador de Arquivos do Windows ou o prompt de comando.

Gerenciar o trabalho em seu computador de desenvolvimento

Alterações pendentes e páginas Meu Trabalho no Visual Studio Team Explorer.

Páginas de alterações, confirmações e ramificações.

Suspender seu trabalho

Você pode suspender o trabalho da página Meu Trabalho ou Arquivar suas alterações na página Alterações Pendentes. Para obter mais informações, consulte Suspender seu trabalho e gerenciar seus check-ins particulares.

Você pode criar uma ramificação do Visual Studio ou do prompt de comando, ou um stash do prompt de comando.

Compatibilidade com o Visual Studio

Você pode usar todas as versões do Visual Studio com suporte.

Você pode usar todas as versões do Visual Studio com suporte.

Portal da Web

Você pode procurar sua base de código (incluindo ramificações), exibir histórico, anotar e comentar os conjuntos de alterações e check-ins particulares, além de realizar outras tarefas, como download ad hoc de partes selecionadas de sua base de código como um arquivo .zip.

Você pode procurar sua base de código, exibir histórico, comparar ramificações, anotar e comentar confirmações, além de realizar outras tarefas, como download ad hoc de partes selecionadas de sua base de código como um arquivo .zip.

Migração

Para saber como migrar do TFVC para o Git, consulte Migrar do TFVC para o Git.