Importar e migrar repositórios do TFVC para o Git

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

Você pode migrar o código de um repositório TFVC existente para um novo repositório Git dentro da mesma organização. A migração para o Git é um processo envolvido para grandes repositórios e equipes de TFVC. Sistemas centralizados de controle de versão, como o TFVC, se comportam de maneira diferente do Git de maneiras fundamentais. O switch envolve muito mais do que aprender novos comandos. É uma mudança disruptiva que requer um planejamento cuidadoso. Você precisa pensar em:

  • Revisão de ferramentas e processos
  • Removendo binários e executáveis
  • Treinar a sua equipa

É altamente recomendável ler Controle de versão centralizado para o Git e a seguinte seção Migrar do TFVC para o Git antes de iniciar a migração.

A experiência de importação é ótima para pequenos repositórios TFVC simples. Também é bom para repositórios que já foram "limpos", conforme descrito em Controle de versão centralizado para o Git e a seguinte seção Migrar do TFVC para o Git . Essas seções também recomendam outras ferramentas para configurações mais avançadas do repositório TFVC.

Importante

Devido às diferenças na forma como o TFVC e o Git armazenam o histórico de controle de versão, recomendamos que você não migre seu histórico. Esta é a abordagem que a Microsoft teve ao migrar o Windows e outros produtos do controlo de versões centralizado para o Git.

Importando o repositório

  1. Selecione Repos, Arquivos.

    Ver as suas filiais

  2. Na lista suspensa do repositório, selecione Importar repositório.

    Opção Importar repositório

  3. Selecione TFVC na lista suspensa Tipo de origem

  4. Digite o caminho para o repositório / ramificação / pasta que você deseja importar para o repositório Git. Por exemplo, $/Fabrikam/FabrikamWebsite

  5. Se quiser migrar o histórico do repositório TFVC, clique em Migrar histórico e selecione o número de dias. Você pode migrar até 180 dias de histórico a partir do conjunto de alterações mais recente. Um link para o repositório TFVC é adicionado na mensagem de confirmação do 1º conjunto de alterações migrado para o Git. Isso facilita a localização de históricos antigos quando necessário.

  6. Dê um nome ao novo repositório Git e clique em Importar. Dependendo do tamanho da importação, seu repositório Git estaria pronto em poucos minutos.

    Caixa de diálogo Importar repositório

Resolução de Problemas

Essa experiência é otimizada para repositórios TFVC pequenos e simples ou repositórios que foram preparados para uma migração. Isto significa que tem algumas limitações.

  1. Ele só migra o conteúdo da raiz ou de um ramo. Por exemplo, se você tiver um projeto TFVC no $/Fabrikam qual tenha 1 ramificação e 1 pasta sob ele, um caminho para importar $/Fabrikam importaria a pasta enquanto $/Fabrikam/<branch> importaria apenas a ramificação.
  2. O repositório importado e o histórico associado (se importado) não podem exceder 1 GB de tamanho.
  3. Você pode importar até 180 dias de histórico.

Se qualquer um dos itens acima for um bloqueador para sua importação, recomendamos que você tente ferramentas externas como o Git-TFS para importar e ler nossos whitepapers - Controle de versão centralizado para o Git e a seguinte seção Migrar do TFVC para o Git .

Importante

O uso de ferramentas externas como o Git-TFS com produtos, serviços ou plataformas da Microsoft é de inteira responsabilidade do usuário. A Microsoft não endossa, oferece suporte ou garante a funcionalidade, confiabilidade ou segurança de tais extensões de terceiros.

Migrar do TFVC para o Git

Antes de migrar o código de origem de um sistema de controlo de versões centralizado para o Git, compreenda as diferenças entre os dois e prepare-se para a migração.

Requisitos

Para facilitar as migrações, há uma série de requisitos antes de seguir o procedimento de importação do repositório na seção anterior deste artigo.

  • Migre apenas uma única ramificação. Ao planejar a migração, escolha uma nova estratégia de ramificação para o Git. A migração apenas da ramificação principal suporta um fluxo de trabalho baseado em ramificação de tópico, como o GitFlow ou o GitHub Flow.
  • Faça uma migração de dicas, como em, importe apenas a versão mais recente do código-fonte. Se o histórico do TFVC for simples, há uma opção para migrar algum histórico, até 180 dias, para que a equipe possa trabalhar apenas fora do Git. Para obter mais informações, consulte Planejar sua migração para o Git.
  • Exclua ativos binários como imagens, conjuntos de dados científicos ou modelos de jogos do repositório. Esses ativos devem usar a extensão Git LFS (Large File Storage), que a ferramenta de importação não configura.
  • Mantenha o repositório importado abaixo de 1GB de tamanho.

Se o repositório não atender a esses requisitos, use a ferramenta Git-TFS para fazer a migração.

Importante

O uso de ferramentas externas como o Git-TFS com produtos, serviços ou plataformas da Microsoft é de inteira responsabilidade do usuário. A Microsoft não endossa, oferece suporte ou garante a funcionalidade, confiabilidade ou segurança de tais extensões de terceiros.

Passos de migração

O processo de migração do TFVC é geralmente simples:

  1. Confira a versão mais recente da ramificação do TFVC em seu disco local.
  2. Remova binários e ferramentas de compilação do repositório e configure um sistema de gerenciamento de pacotes como o NuGet.
  3. Converta diretivas de configuração específicas do controle de versão. Por exemplo, converta .tfignore arquivos em .gitignore, e converta .tpattributes arquivos em .gitattributes.
  4. Faça check-in das alterações e execute a migração para o Git.

Os passos 1 a 3 são opcionais. Se não houver binários no repositório e não houver necessidade de configurar um .gitignore ou um .gitattributes, você pode prosseguir diretamente para as alterações de check-in e executar a etapa de migração .

Confira a versão mais recente

Crie um novo espaço de trabalho do TFS e mapeie uma pasta de trabalho para o diretório do servidor que está sendo migrado para o Git. Isso não requer um mapeamento completo de pastas de trabalho. Apenas mapeie pastas que contenham binários a serem removidos do repositório e pastas que contenham arquivos de configuração específicos do sistema de controle de versão, como .tfignore.

Depois que os mapeamentos estiverem configurados, obtenha a pasta localmente:

tf get /version:T /recursive

Remover binários e ferramentas de compilação

Devido à maneira como o Git armazena o histórico de arquivos alterados, fornecendo uma cópia de cada arquivo no histórico para cada desenvolvedor, o check-in de arquivos binários diretamente no repositório faz com que o repositório cresça rapidamente e pode causar problemas de desempenho.

Para ferramentas de compilação e dependências, como bibliotecas, adote uma solução de empacotamento com suporte a controle de versão, como o NuGet. Muitas ferramentas e bibliotecas de código aberto já estão disponíveis na Galeria NuGet, mas para dependências proprietárias, crie novos pacotes NuGet.

Depois que as dependências forem movidas para o NuGet, certifique-se de que elas não estejam incluídas no repositório Git adicionando-as ao .gitignore.

Converter configuração específica do controle de versão

O Controle de Versão do Team Foundation fornece um .tfignore arquivo, o que garante que determinados arquivos não sejam adicionados ao repositório TFVC. Você pode usar o .tfignore arquivo para arquivos gerados automaticamente, como saída de compilação, para que eles não sejam verificados acidentalmente.

Se o projeto depende desse comportamento, converta o .tfignore arquivo em um .gitignore arquivo.

Os clientes TFVC multiplataforma também fornecem suporte para um .tpattributes arquivo que controla como os arquivos são colocados no disco local ou verificados no repositório. Se um .tpattributes arquivo estiver em uso, converta-o em um .gitattributes arquivo.

Fazer check-in das alterações e realizar a migração

Faça check-in de todas as alterações que removem binários, migram para o gerenciamento de pacotes ou convertem configurações específicas do controle de versão. Depois de fazer essa alteração final no TFVC, você pode fazer a importação.

Siga o procedimento Importando o repositório para fazer a importação.

Migrações avançadas

A ferramenta Git-TFS é uma ponte bidirecional entre o Controle de Versão do Team Foundation e o Git, e você pode usá-la para executar uma migração. O Git-TFS é apropriado para uma migração com histórico completo, mais do que os 180 dias suportados pela ferramenta Importar. Ou você pode usar o Git-TFS para tentar uma migração que inclua várias ramificações e mesclar relações.

Antes de tentar uma migração com o Git-TFS, observe que há diferenças fundamentais entre a maneira como o TFVC e o Git armazenam o histórico:

  • O Git armazena o histórico como um instantâneo do repositório no tempo, enquanto o TFVC registra as operações discretas que ocorreram em um arquivo. Os tipos de alteração no TFVC, como renomear, cancelar exclusão e reversão, não podem ser expressos no Git. Em vez de ver que o arquivo A foi renomeado para arquivo B, ele apenas rastreia que o arquivo A foi excluído e o arquivo B foi adicionado na mesma confirmação.
  • O Git não tem um análogo direto de um rótulo TFVC. As etiquetas podem conter qualquer número de arquivos em qualquer versão específica e podem refletir arquivos em versões diferentes. Embora conceitualmente semelhantes, as tags Git apontam para um instantâneo de todo o repositório em um determinado momento. Se o projeto depender de rótulos TFVC para saber o que foi entregue, as tags Git podem não fornecer essas informações.
  • As mesclagens no TFVC ocorrem no nível do arquivo, não em todo o repositório. Somente um subconjunto de arquivos alterados pode ser mesclado de uma ramificação para outra. Os arquivos alterados restantes podem ser mesclados em um conjunto de alterações subsequente. No Git, uma mesclagem afeta todo o repositório e ambos os conjuntos de alterações individuais não podem ser vistos como uma mesclagem.

Devido a essas diferenças, é recomendável que você faça uma migração de dica e mantenha seu repositório TFVC online, mas somente leitura, para visualizar o histórico.

Para tentar uma migração avançada com o Git-TFS, consulte clonar uma única ramificação com histórico ou clonar todas as ramificações com histórico de mesclagem.

Importante

O uso de ferramentas externas como o Git-TFS com produtos, serviços ou plataformas da Microsoft é de inteira responsabilidade do usuário. A Microsoft não endossa, oferece suporte ou garante a funcionalidade, confiabilidade ou segurança de tais extensões de terceiros.

Atualizar o fluxo de trabalho

Mudar de um sistema de controle de versão centralizado para o Git é mais do que apenas migrar código. A equipe precisa de treinamento para entender como o Git é diferente do sistema de controle de versão existente e como essas diferenças afetam o trabalho diário.

Saiba mais sobre como migrar do controle de versão centralizado para o Git.