Importare ed eseguire la migrazione di repository da TFVC a Git

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

È possibile eseguire la migrazione del codice da un repository TFVC esistente a un nuovo repository Git all'interno della stessa organizzazione. La migrazione a Git è un processo coinvolto per repository e team TFVC di grandi dimensioni. I sistemi di controllo della versione centralizzati, ad esempio TFVC, si comportano in modo diverso da Git in modi fondamentali. L'opzione prevede molto di più rispetto all'apprendimento di nuovi comandi. Si tratta di un cambiamento dirompente che richiede un'attenta pianificazione. È necessario considerare quanto segue:

  • Revisione di strumenti e processi
  • Rimozione di file binari ed eseguibili
  • Formazione del team

Prima di avviare la migrazione, è consigliabile leggere controllo della versione centralizzato in Git e la sezione Eseguire la migrazione da TFVC a Git seguente.

L'esperienza di importazione è ideale per piccoli repository TFVC semplici. È utile anche per i repository che sono già stati "puliti" come descritto in Controllo della versione centralizzato in Git e nella sezione Eseguire la migrazione da TFVC a Git seguente. Queste sezioni consigliano anche altri strumenti per configurazioni del repository TFVC più avanzate.

Importante

A causa delle differenze tra la cronologia del controllo della versione di Team Foundation e Git store, è consigliabile non eseguire la migrazione della cronologia. Questo è l'approccio adottato da Microsoft durante la migrazione di Windows e di altri prodotti dal controllo della versione centralizzata a Git.

Importazione del repository

  1. Selezionare Repository, File.

    Visualizzare i rami

  2. Nell'elenco a discesa repository selezionare Importa repository.

    Opzione Importa repository

  3. Selezionare TFVC dall'elenco a discesa Tipo di origine

  4. Digitare il percorso del repository/ramo/cartella da importare nel repository Git. Ad esempio, $/Fabrikam/FabrikamWebsite

  5. Per eseguire la migrazione della cronologia dal repository TFVC, fare clic su Cronologia di migrazione e selezionare il numero di giorni. È possibile eseguire la migrazione fino a 180 giorni di cronologia a partire dal set di modifiche più recente. Viene aggiunto un collegamento al repository TFVC nel messaggio di commit del set di modifiche 1° migrato in Git. In questo modo è facile trovare la cronologia precedente quando necessario.

  6. Assegnare un nome al nuovo repository Git e fare clic su Importa. A seconda delle dimensioni dell'importazione, il repository Git sarà pronto in pochi minuti.

    Finestra di dialogo Importa repository

Risoluzione dei problemi

Questa esperienza è ottimizzata per repository o repository TFVC di piccole dimensioni che sono stati preparati per una migrazione. Ciò significa che presenta alcune limitazioni.

  1. Esegue solo la migrazione del contenuto della radice o di un ramo. Ad esempio, se si dispone di un progetto TFVC in cui $/Fabrikam è presente 1 ramo e 1 cartella, un percorso da importare $/Fabrikam importerebbe la cartella mentre $/Fabrikam/<branch> importerebbe solo il ramo.
  2. Il repository importato e la cronologia associata (se importati) non possono superare i 1 GB di dimensioni.
  3. È possibile importare fino a 180 giorni di cronologia.

Se uno dei precedenti è un blocco per l'importazione, è consigliabile provare strumenti esterni come Git-TFS per importare e leggere i white paper - Controllo della versione centralizzato in Git e la sezione Eseguire la migrazione da TFVC a Git.

Importante

L'uso di strumenti esterni come Git-TFS con prodotti, servizi o piattaforme Microsoft è interamente responsabilità dell'utente. Microsoft non supporta, supporta o garantisce la funzionalità, l'affidabilità o la sicurezza di tali estensioni di terze parti.

Migrate from TFVC to Git (Eseguire la migrazione dal controllo della versione di Team Foundation a Git)

Prima di eseguire la migrazione del codice sorgente da un sistema di controllo della versione centralizzata a Git, è necessario comprendere le differenze tra i due e preparare la migrazione.

Requisiti

Per semplificare le migrazioni, esistono diversi requisiti prima di seguire la procedura di importazione del repository nella sezione precedente di questo articolo.

  • Eseguire la migrazione di un solo ramo. Quando si pianifica la migrazione, scegliere una nuova strategia di diramazione per Git. La migrazione solo del ramo principale supporta un flusso di lavoro basato su ramo dell'argomento, ad esempio GitFlow o GitHub Flow.
  • Eseguire una migrazione della mancia, come in, importare solo la versione più recente del codice sorgente. Se la cronologia della versione di Team Foundation è semplice, è possibile eseguire la migrazione di una cronologia, fino a 180 giorni, in modo che il team possa lavorare solo da Git. Per altre informazioni, vedere Pianificare la migrazione a Git.
  • Escludere asset binari come immagini, set di dati scientifici o modelli di gioco dal repository. Questi asset devono usare l'estensione Git LFS (Archiviazione file di grandi dimensioni), che lo strumento di importazione non configura.
  • Mantenere il repository importato di dimensioni inferiori a 1 GB.

Se il repository non soddisfa questi requisiti, usare invece lo strumento Git-TFS per eseguire la migrazione.

Importante

L'uso di strumenti esterni come Git-TFS con prodotti, servizi o piattaforme Microsoft è interamente responsabilità dell'utente. Microsoft non supporta, supporta o garantisce la funzionalità, l'affidabilità o la sicurezza di tali estensioni di terze parti.

Passaggi per la migrazione

Il processo di migrazione da TFVC è in genere semplice:

  1. Vedere la versione più recente del ramo da TFVC nel disco locale.
  2. Rimuovere i file binari e gli strumenti di compilazione dal repository e configurare un sistema di gestione pacchetti come NuGet.
  3. Convertire le direttive di configurazione specifiche del controllo della versione. Ad esempio, convertire .tfignore i file in .gitignoree convertire .tpattributes i file in .gitattributes.
  4. Archiviare le modifiche ed eseguire la migrazione a Git.

I passaggi da 1 a 3 sono facoltativi. Se non sono presenti file binari nel repository e non è necessario configurare o .gitignore un .gitattributes, è possibile passare direttamente al passaggio Controlla modifiche ed eseguire il passaggio di migrazione .

Vedere la versione più recente

Creare una nuova area di lavoro TFS ed eseguire il mapping di una cartella di lavoro per la directory del server di cui viene eseguita la migrazione a Git. Questo non richiede un mapping completo della cartella di lavoro. Solo le cartelle di mapping che contengono file binari da rimuovere dal repository e dalle cartelle che contengono file di configurazione specifici del sistema di controllo della versione, ad esempio .tfignore.

Dopo aver configurato i mapping, ottenere la cartella in locale:

tf get /version:T /recursive

Rimuovere file binari e strumenti di compilazione

A causa del modo in cui Git archivia la cronologia dei file modificati fornendo una copia di ogni file nella cronologia a ogni sviluppatore, il controllo dei file binari direttamente nel repository causa un aumento rapido del repository e può causare problemi di prestazioni.

Per gli strumenti di compilazione e le dipendenze, ad esempio le librerie, adottare una soluzione di creazione di pacchetti con supporto per il controllo delle versioni, ad esempio NuGet. Molti strumenti e librerie open source sono già disponibili nella raccolta NuGet, ma per le dipendenze proprietarie, creare nuovi pacchetti NuGet.

Dopo che le dipendenze vengono spostate in NuGet, assicurarsi che non siano incluse nel repository Git aggiungendole a .gitignore.

Convertire la configurazione specifica del controllo della versione

controllo della versione di Team Foundation fornisce un .tfignore file, che garantisce che determinati file non siano aggiunti al repository TFVC. È possibile usare il .tfignore file per i file generati automaticamente, ad esempio l'output di compilazione, in modo che non vengano accidentalmente memorizzati.

Se il progetto si basa su questo comportamento, convertire il .tfignore file in un .gitignore file.

I client TFVC multipiattaforma forniscono anche supporto per un .tpattributes file che controlla la modalità di inserimento dei file nel disco locale o l'archiviazione nel repository. Se un .tpattributes file è in uso, convertirlo in un .gitattributes file.

Archiviare le modifiche ed eseguire la migrazione

Archiviare eventuali modifiche che rimuovono i file binari, eseguire la migrazione alla gestione dei pacchetti o convertire la configurazione specifica del controllo della versione. Dopo aver apportato questa modifica finale in TFVC, è possibile eseguire l'importazione.

Seguire la procedura Importazione del repository per eseguire l'importazione.

Migrazioni avanzate

Lo strumento Git-TFS è un bridge bidirezionale tra controllo della versione di Team Foundation e Git ed è possibile usarlo per eseguire una migrazione. Git-TFS è appropriato per una migrazione con cronologia completa, oltre i 180 giorni supportati dallo strumento di importazione. In alternativa, è possibile usare Git-TFS per tentare una migrazione che include più rami e relazioni di merge.

Prima di tentare una migrazione con Git-TFS, tenere presente che esistono differenze fondamentali tra la cronologia dell'archivio TFVC e Git:

  • Git archivia la cronologia come snapshot del repository in tempo, mentre TFVC registra le operazioni discrete che si sono verificate in un file. I tipi di modifica in TFVC, ad esempio rename, undelete e rollback non possono essere espressi in Git. Invece di vedere che il file A è stato rinominato in file B, tiene traccia solo del file eliminato e il file A B è stato aggiunto nello stesso commit.
  • Git non ha un analogico diretto di un'etichetta TFVC. Le etichette possono contenere un numero qualsiasi di file in qualsiasi versione specifica e possono riflettere i file in versioni diverse. Sebbene concettualmente simili, i tag Git puntano a uno snapshot dell'intero repository in un momento specifico. Se il progetto si basa sulle etichette TFVC per sapere cosa è stato recapitato, i tag Git potrebbero non fornire queste informazioni.
  • Le merge in TFVC si verificano a livello di file, non a livello di file. Solo un subset di file modificati può essere unito da un ramo a un altro. I file modificati rimanenti potrebbero quindi essere uniti in un set di modifiche successivo. In Git, un'unione influisce sull'intero repository e entrambi i set di singole modifiche non possono essere visualizzati come unione.

A causa di queste differenze, è consigliabile eseguire una migrazione dei suggerimenti e mantenere online il repository TFVC, ma di sola lettura, per visualizzare la cronologia.

Per tentare una migrazione avanzata con Git-TFS, vedere Clonare un singolo ramo con cronologia o clonare tutti i rami con la cronologia di merge.

Importante

L'uso di strumenti esterni come Git-TFS con prodotti, servizi o piattaforme Microsoft è interamente responsabilità dell'utente. Microsoft non supporta, supporta o garantisce la funzionalità, l'affidabilità o la sicurezza di tali estensioni di terze parti.

Aggiornare il flusso di lavoro

Il passaggio da un sistema di controllo della versione centralizzato a Git non è solo la migrazione del codice. Il team ha bisogno di formazione per comprendere in che modo Git è diverso dal sistema di controllo della versione esistente e come queste differenze influiscono sul lavoro quotidiano.

Altre informazioni su come eseguire la migrazione dal controllo della versione centralizzato a Git.