Condividi tramite


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 Team Foundation Version Control (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 tuo team

Prerequisiti

Categoria Requisiti
Accesso al progetto Membro di un progetto.
Autorizzazioni - Visualizzare il codice nei progetti privati: almeno livello di accesso Basic .
- Clonare o contribuire al codice nei progetti privati: membro del gruppo di sicurezza Contributors o con autorizzazioni corrispondenti nel progetto.
- Impostare le autorizzazioni per il ramo o il repository: Gestisci le autorizzazioni per il ramo o il repository.
- Modificare il ramo predefinito: Modificare le politiche le autorizzazioni per il repository.
- Importare un repository: membro del gruppo di sicurezza amministratori del progetto o autorizzazione a livello di progetto Git Crea repository impostata su Consenti. Per altre informazioni, vedere Impostare le autorizzazioni del repository Git.
Servizi Repos abilitato.
Strumenti Opzionale. Usare i comandi az repos: l'interfaccia della riga di comando di Azure DevOps.

Annotazioni

Nei progetti pubblici, gli utenti con accesso Stakeholder hanno pieno accesso ad Azure Repos, compresa la visualizzazione, la clonazione e il contribuire al codice.

Categoria Requisiti
Accesso al progetto Membro di un progetto.
Autorizzazioni - Visualizzare il codice: almeno accesso di base.
- Clonare o contribuire al codice: membro del gruppo di sicurezza Contributor o autorizzazioni corrispondenti nel progetto.
Servizi Repos abilitato.

È consigliabile leggere la sezione Controllo della versione centralizzata in Git e la sezione Eseguire la migrazione da TFVC a Git prima di avviare la migrazione.

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

Importante

A causa delle differenze nel modo in cui TFVC e Git memorizzano la cronologia del controllo versione, consigliamo di non eseguire la migrazione della cronologia, che è l'approccio adottato da Microsoft quando ha migrato Windows e altri prodotti dal controllo della versione centralizzato a Git.

Importare il repository

  1. Selezionare Repository, File.

    Visualizza le tue filiali

  2. Nell'elenco a discesa del repository, seleziona Importa repository.

    Opzione di Importazione del Repository

  3. Selezionare TFVC dal menu a discesa Tipo di origine

  4. Inserisci il percorso al repository / ramo / cartella che vuoi importare nel repository Git. Ad esempio, $/Fabrikam/FabrikamWebsite

  5. Per eseguire la migrazione della cronologia dal repository TFVC, selezionare Esegui la migrazione della cronologia e selezionare il numero di giorni. È possibile migrare fino a 180 giorni di cronologia a partire dal set di modifiche più recente. Un collegamento al repository TFVC viene aggiunto nel messaggio di commit del primo set di modifiche di cui viene eseguita la migrazione a Git, che semplifica la ricerca della cronologia precedente quando necessario.

  6. Assegnare un nome al nuovo repository Git e selezionare 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 piccoli e semplici repository TFVC, o repository pronti 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 un ramo e una cartella al suo interno, 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 una delle informazioni elencate in precedenza è 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 non Microsoft.

Eseguire la migrazione da TFVC a Git

Prima di eseguire la migrazione del codice sorgente da un sistema di controllo della versione centralizzato a Git, comprendere le differenze tra i due e prepararsi per la migrazione.

Requisiti

Per semplificare le migrazioni, esistono molti 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 argomento, ad esempio Gitflow o GitHub Flow.
  • Eseguire una migrazione al tip, cioè importare solo la versione più recente del codice sorgente. Se la cronologia di TFVC è semplice, è possibile scegliere di eseguire la migrazione della cronologia, fino a 180 giorni, così che il team possa lavorare esclusivamente con 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 strumentoGit-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 non Microsoft.

Migrazione

Il processo di migrazione da TFVC è semplice:

  1. Scarica la versione più recente del ramo da TFVC sul 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 delle versioni. 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 un .gitignore o un .gitattributes, è possibile passare direttamente al passaggio Controlla le modifiche ed esegui la migrazione.

Vedere la versione più recente

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

Dopo aver configurato le mappature, scarica la cartella in locale.

tf get /version:T /recursive

Rimuovere file binari e strumenti di compilazione

Poiché 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 può causare un aumento rapido del repository e 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 di versione

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

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.

Migrazioni avanzate

Lo strumentoGit-TFS è un bridge bidirezionale tra TFVS e Git ed è possibile usarlo per eseguire una migrazione. Git-TFS è appropriato per una migrazione con cronologia completa, più di 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 le seguenti differenze fondamentali tra il modo in cui TFVC e Git archiviano la cronologia:

  • Git archivia la cronologia come snapshot del repository, mentre TFVC registra le operazioni discrete che si sono verificate su 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 AB è 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 fusioni in TFVC si verificano a livello di file, non a livello dell'intero repository. 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 di punta e mantenere il repository TFVC online, ma in modalità 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 non Microsoft.

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.