Microsoft Certified: DevOps Engineer ExpertDesign and implement source controlMedium

A development team is migrating their existing on-premises Team Foundation Version Control (TFVC) repository to Azure DevOps Git. They have a large history with many branches and merges. The team wants to preserve all historical data, including branches, merges, and changesets, while ensuring a smooth transition with minimal disruption. Which migration strategy should they use?

  1. AManually re-create all branches and commit history in a new Git repository.
  2. BExport the TFVC history to a flat Git repository without merge information.
  3. CUse the 'git-tfs' command-line tool to perform a full fidelity migration.
  4. DUtilize Azure DevOps' built-in 'Import repository' feature for TFVC without any pre-processing.
Show answer & explanation

Correct answer: C. Use the 'git-tfs' command-line tool to perform a full fidelity migration.

The 'git-tfs' tool is specifically designed for migrating TFVC repositories to Git while preserving full history, including branches, merges, and changesets, making it the most suitable option for a full fidelity migration.

Why the other options are wrong

  • A. Manually re-creating history is time-consuming, error-prone, and unlikely to preserve all nuances of the original TFVC history.
  • B. Exporting to a flat Git repository would lose crucial merge information and branch history, which is contrary to the requirement.
  • D. Azure DevOps' built-in 'Import repository' feature is primarily for importing existing Git repositories or basic TFVC codebases, and may not preserve full history/merges as comprehensively as 'git-tfs' for complex TFVC repositories.

TFVC to Git Migration (Full Fidelity)

The process of moving a Team Foundation Version Control (TFVC) repository to a Git repository while retaining all historical data, including branches, merges, and changesets.

  • Preserves complete history for auditing and context.
  • Often requires specialized tools like 'git-tfs'.
  • More complex than basic code migration but offers significant benefits.

Memory trick: Think of 'git-tfs' as a time machine, preserving every branch and merge from TFVC's past.

More Design and implement source control questions