Compartilhar via


Importar e migrar repositórios do TFVC para o Git

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Você pode migrar o código de um repositório TFVC (Team Foundation Version Control) existente para um novo repositório 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 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 sua equipe

Pré-requisitos

Categoria Requisitos
Acesso ao Projeto Membro de um projeto.
Permissões - Exibir código em projetos privados: pelo menos acesso básico .
- Clonar ou contribuir para o código em projetos privados: membro do grupo de segurança Colaboradores ou permissões correspondentes no projeto.
- Definir permissões de branch ou repositório: gerenciar permissões de permissões para o branch ou repositório.
- Alterar o branch padrão: editar permissões de políticas para o repositório.
- Importar um repositório: membro do grupo de segurança Administradores do Projeto ou da permissão Criar repositório no nível do projeto do Git definida como Permitir. Para obter mais informações, consulte Definir permissões do Repositório do Git.
Serviços Repositórios habilitados.
Ferramentas Optional. Use comandos az repos : CLI do Azure DevOps.

Observação

Em projetos públicos, os usuários com acesso ao Stakeholder têm acesso total ao Azure Repos, incluindo exibição, clonagem e contribuição para o código.

Categoria Requisitos
Acesso ao Projeto Membro de um projeto.
Permissões - Exibir código: pelo menos acesso básico .
- Clonar ou contribuir com o código: membro do grupo de segurança Colaboradores ou permissões correspondentes no projeto.
Serviços Repositórios habilitados.

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

A experiência de importação é ideal para repositórios TFVC pequenos e simples. Ele também é adequado para repositórios que já estão limpos, conforme descrito no controle de versão centralizado para o Git e na 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 Git Store, recomendamos não migrar seu histórico, que é a abordagem que a Microsoft adotou ao migrar o Windows e outros produtos do controle de versão centralizado para o Git.

Importar 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, selecione 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 primeiro conjunto de alterações que é migrado para o Git, o que facilita a localização do histórico mais antigo quando necessário.

  6. Dê um nome ao novo repositório Git e selecione 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 TFVC pequenos e simples ou repositórios 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 um branch e uma 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 uma das informações listadas anteriormente for um bloqueador para sua importação, recomendamos experimentar ferramentas externas como o Git-TFS para importar e ler nossos white papers – controle de versão centralizado para Git e a seção Migrar do TFVC para o Git a seguir.

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, dá suporte ou garante a funcionalidade, a confiabilidade ou a segurança dessas extensões que não são da Microsoft.

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á muitos 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 dá suporte a um fluxo de trabalho baseado em branch de tópico, como Gitflow ou 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, você poderá optar por migrar algum histórico, até 180 dias, para que a equipe possa trabalhar somente 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, dá suporte ou garante a funcionalidade, a confiabilidade ou a segurança dessas extensões que não são da Microsoft.

Migrate

O processo de migração do TFVC é 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 workspace e mapeie uma pasta de trabalho para o diretório do servidor que está sendo migrado para o Git. Essa ação não requer um mapeamento completo de 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

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 pode fazer com que o repositório cresça rapidamente e leve a 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, certifique-se de que elas não estão incluídas no repositório Git adicionando-as a .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ê poderá fazer a importação.

Migrações avançadas

A ferramentaGit-TFS é uma ponte bidirecional entre TFVS e 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, lembre-se das seguintes diferenças fundamentais entre a maneira como o TFVC e o histórico do repositório Git:

  • 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 que você faça uma migração de gorjetas e mantenha seu repositório TFVC online, mas somente leitura, para exibir 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, dá suporte ou garante a funcionalidade, a confiabilidade ou a segurança dessas extensões que não são da Microsoft.

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.