Escolhendo o controle de versão certo para seu projeto

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Se o seu projeto de software é grande ou pequeno, usar o controle de versão o mais rápido possível é 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).

Que sistema de controlo de versão devo utilizar?

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. TFVC é considerado recurso completo. O Azure DevOps manterá a compatibilidade com o TFVC, mas o Git receberá todo o investimento futuro.

Você pode usar repositórios TFVC com Git no mesmo projeto, por isso é fácil adicionar 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 sua máquina de desenvolvimento. Os desenvolvedores podem confirmar cada conjunto de alterações em sua máquina de desenvolvimento e executar operações de controle de versão, como histórico e comparação, sem uma conexão de rede. Os ramos são leves. Quando precisar alternar contextos, você poderá criar uma ramificação local privada. Você pode alternar rapidamente de uma ramificação para outra para pivotar entre diferentes variações de sua base de código. Mais tarde, você pode mesclar, publicar ou descartar a ramificação.

Nota

O Git no Visual Studio, nos Serviços de DevOps do Azure e no Servidor de DevOps do Azure é 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)

Team Foundation Version Control (TFVC) é um sistema de controle de versão centralizado. Normalmente, os membros da equipe têm apenas uma versão de cada arquivo em suas máquinas de desenvolvimento. Os dados históricos são mantidos apenas no servidor. As ramificações são baseadas em caminho e criadas no servidor.

O TFVC tem dois modelos de fluxo de trabalho:

  • Espaços de trabalho do servidor - Antes de fazer alterações, os membros da equipe fazem check-out público dos arquivos. A maioria das operações requer que os desenvolvedores estejam conectados ao servidor. Este sistema facilita o bloqueio de fluxos de trabalho. Outros sistemas que funcionam dessa forma incluem Visual Source Safe, Perforce e CVS. Com espaços de trabalho de servidor, você pode escalar para bases de código muito grandes com milhões de arquivos por ramificação e arquivos binários grandes.

  • Espaços de trabalho locais - Cada membro da equipe leva consigo uma cópia da versão mais recente da base de código e trabalha offline conforme necessário. Os desenvolvedores verificam suas alterações e resolvem conflitos conforme necessário. Outro sistema que funciona desta forma é o Subversion.

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

Mudando de TFVC para 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 Git e TFVC

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

Capacidade

TFVC

Git


Alterações

Os membros da equipe podem alterar arquivos simultaneamente em suas máquinas de desenvolvimento. Você carrega (check-in) conjuntos de alterações para o servidor quando os cria. Pode carregar as 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 check-in. Você pode vincular conjuntos de alterações a itens de trabalho e associá-los a compilações concluídas.

Os membros da equipe podem alterar arquivos simultaneamente em suas máquinas de desenvolvimento. Você cria commits em sua máquina de desenvolvimento independentemente de contribuir com eles para a equipe. Quando estiver pronto, você deve puxar as confirmações mais recentes antes de carregar (enviar) o seu para o servidor. Quando você puxa, você pode ser interrompido por conflitos.

Você pode alterar a confirmação local mais recente. Não é possível alterar confirmações mais antigas. Você pode vincular confirmações a itens de trabalho e associá-los a compilações concluídas.

Você pode modificar e combinar confirmações locais no prompt de comando.

Ramificação

As ramificações baseadas em caminhos são usadas principalmente como construções de longa data para isolar o risco de alteração entre equipes de recursos e versões. Os membros da equipe normalmente configuram um espaço de trabalho diferente para cada ramo em que trabalham.

As alterações em cada ramo são independentes umas das outras, por isso não tem de as verificar antes de mudar de uma filial para outra. A fusão entre ramos irmãos requer uma fusão sem fundamento.

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

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

A ramificação é leve e independente do caminho. Muitos desenvolvedores criam uma ramificação para cada novo recurso que estão codificando, às vezes diariamente. Você pode alternar rapidamente de uma ramificação para outra para pivotar entre diferentes variações de sua base de código. Você pode criar ramificações que existem apenas em sua máquina de desenvolvimento e compartilhá-las se e quando estiver pronto.
Você deve confirmar, ramificar, armazenar ou desfazer alterações antes de mudar de ramificação. A fusão é simples e independente do compromisso 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 do Git para alternar contextos, suspender o trabalho e isolar riscos.

Resolução de conflitos

Talvez seja necessário resolver conflitos ao receber, fazer check-in, mesclar ou desarquivar. Você pode resolver todos os tipos de conflitos no Visual Studio.

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

Armazenamento de ficheiros

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

Você pode fazer check-in de pequenos arquivos binários como faria com arquivos regulares. Ao trabalhar com arquivos binários grandes, use o Git-LFS para armazenar seus arquivos binários grandes no Azure Repos.

Histórico

O histórico de arquivos não é replicado na máquina de desenvolvimento do cliente e, portanto, pode ser visualizado somente quando você está conectado ao servidor. Você pode exibir o histórico no Visual Studio e no portal da Web. Você pode anotar arquivos para ver quem alterou uma linha e quando eles a alteraram.

O histórico de arquivos é replicado na máquina de desenvolvimento do cliente e pode ser visualizado mesmo quando não está conectado ao servidor. Você pode exibir o histórico no Visual Studio e no portal da Web. Você pode anotar arquivos para ver quem alterou uma linha e quando eles a alteraram.

Marque 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 tags do prompt de comando a confirmações individuais. Exiba marcas na janela de histórico do Visual Studio.

Reverter alterações

Você pode reverter uma confirmação.

Escala

Você pode trabalhar em projetos de pequena ou muito grande escala usando espaços de trabalho locais. Suporte a projetos de grande escala (milhões de arquivos por ramificação e grandes arquivos binários) usando espaços de trabalho de servidor.

Você pode começar rapidamente pequenos projetos. Você pode escalar para projetos muito grandes, mas precisa 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 suportados para cada um dos sistemas de controle de versão.

Capacidade

TFVC

Git


Servidor

Serviços de DevOps do Azure, Servidor de DevOps do Azure

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

Alertas

Os membros da equipe podem receber alertas por e-mail quando ocorrem check-ins.

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

Auditabilidade

Como sua equipe faz check-in de todo o seu trabalho em um sistema centralizado, você pode identificar qual usuário fez check-in em um conjunto de alterações e usar comparar para ver o que eles mudaram. Olhando para um arquivo, você pode anotá-lo para identificar quem alterou um bloco de código e quando o fez.

Você pode identificar qual usuário enviou uma confirmação. (Qualquer pessoa pode reivindicar qualquer identidade como autor ou pessoa que cometeu o compromisso.) Você pode identificar quando as alterações foram feitas e o que foi alterado usando o histórico, comparar e anotar.

Compilações (automatizadas pelo TFBuild)

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

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

Análises de código

Veja Dia na vida de um desenvolvedor devops: Suspenda o trabalho, corrija um bug e conduza 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 a partir do portal da Web.

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

Ficheiros

Cada projeto contém todos os arquivos sob um único caminho raiz (por exemplo: $/FabrikamTFVC). Você pode aplicar permissões no nível do arquivo. Pode bloquear ficheiros.

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

Seu projeto existe em apenas 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 a um repositório ou uma ramificação. Os ficheiros não podem ser bloqueados.

Pode procurar os seus ficheiros no portal Web.

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

Portões de qualidade

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

Você pode usar compilações de CI e compilações de check-in fechado por meio de políticas de filial.

Cliente

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

Capacidade

TFVC

Git


Software cliente

Visual Studio

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

Ficheiros

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

Pode procurar os seus ficheiros utilizando o Explorador de Ficheiros do Windows ou a linha de comandos.

Gerencie o trabalho em sua máquina de desenvolvimento

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

Alterações, confirmações e ramificações de páginas.

Suspender o seu trabalho

Pode suspender o trabalho a partir da página O Meu Trabalho ou Arquivar as alterações na página Alterações Pendentes . Para obter mais informações, consulte Suspender seu trabalho e gerenciar seus conjuntos de prateleiras.

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

Compatibilidade com Visual Studio

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

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

Portal Web

Você pode navegar em sua base de código (incluindo ramificações), visualizar o histórico, anotar e comentar conjuntos de alterações e conjuntos de prateleiras e executar outras tarefas, como o download ad hoc de partes selecionadas de sua base de código como um arquivo de .zip .

Você pode navegar em sua base de código, visualizar o histórico, comparar ramificações, anotar e comentar confirmações e executar outras tarefas, como o download ad hoc de partes selecionadas da 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.