Importar e migrar repositórios do TFVC para o Git

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

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

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

É 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 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 do TFVC.

Importante

Devido às diferenças na forma como o TFVC e o histórico de controle de versão do Repositório do Git, recomendamos que você não migre seu histórico. Essa é a abordagem que a Microsoft adotou quando migrou o Windows e outros produtos do controle de versão centralizado para o Git.

Importando o repositório

  1. Selecione Repositórios, Arquivos.

    Exibir seus branches

  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/branch/pasta que você deseja importar para o Repositório do Git. Por exemplo, $/Fabrikam/FabrikamWebsite

  5. Se você 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 que é migrado para o Git. Isso facilita a localização do histórico mais antigo quando necessário.

  6. Dê um nome ao novo Repositório do Git e clique em Importar. Dependendo do tamanho da importação, o Repositório do Git estará pronto em alguns minutos.

    Caixa de diálogo Importar Repositório

Solução de problemas

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

  1. Ele migra apenas o conteúdo da raiz ou de um branch. Por exemplo, se você tiver um projeto TFVC no $/Fabrikam qual tenha 1 branch e 1 pasta sob ele, um caminho para importar $/Fabrikam importará a pasta enquanto $/Fabrikam/<branch> importaria apenas o branch.
  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 extensões de terceiros.

Migrar do TFVC para o Git

Antes de migrar o código-fonte de um sistema de controle de versão centralizado para o Git, entenda as diferenças entre os dois e prepare-se para a migração.

Requisitos

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

  • Migre apenas um único branch. Ao planejar a migração, escolha uma nova estratégia de branch para o Git. A migração apenas do branch principal oferece suporte a um fluxo de trabalho baseado em branch de tópico, como GitFlow or GitHub Flow.
  • Faça uma migração de ponta, por exemplo, importe apenas a versão mais recente do código-fonte. Se o histórico do TFVC for simples, haverá uma opção de migrar algum histórico, de até 180 dias, para que a equipe possa trabalhar apenas fora do Git. Para obter mais informações, confira 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 (Armazenamento de Arquivos Grandes), que a ferramenta de importação não configura.
  • Mantenha o tamanho do repositório importado abaixo de 1 GB.

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 extensões de terceiros.

Etapas para migrar

O processo para migrar do TFVC geralmente é simples:

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

As etapas 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ê poderá prosseguir diretamente para a etapa de verificação de mudanças e realização da migração.

Verificar 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 exige um mapeamento completo da pasta de trabalho. Somente 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 forem 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, a verificação de arquivos binários diretamente no repositório faz com que o ele aumente 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 do NuGet, mas para dependências proprietárias, crie novos pacotes NuGet.

Depois que as dependências forem movidas para o NuGet, elas não devem ser incluídas no Repositório do Git adicionando-as ao .gitignore.

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

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

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

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

Verificar as alterações e executar a migração

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

Siga o procedimento de importação do diretó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 com suporte da ferramenta de importação. Ou você pode usar o Git-TFS para tentar uma migração que inclua vários branches e relações de mesclagem.

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 momento, 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 no mesmo commit.
  • O Git não tem um análogo direto de um rótulo do TFVC. Os rótulos podem conter qualquer número de arquivos em qualquer versão específica e podem refletir arquivos em diferentes versões. Embora conceitualmente semelhantes, as tags do Git apontam para um instantâneo de todo o repositório em um momento específico. Se o projeto depender de rótulos do TFVC para saber o que foi entregue, as tags do Git podem não fornecer essas informações.
  • As mesclagens no TFVC ocorrem no nível do arquivo, não no repositório inteiro. Somente um subconjunto de arquivos alterados pode ser mesclado de um branch para outro. 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, recomendamos fazer uma migração de ponta e manter seu repositório do TFVC online, mas somente leitura, para visualizar o histórico.

Para tentar uma migração avançada com o Git-TFS, consulte clonar um único branch com histórico or clonar todos os branches 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 extensões de terceiros.

Atualizar o fluxo de trabalho

Mover 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.