Con la crescita esponenziale di GitHub, ci sono moltissime realtà aziendali che si stanno muovendo sempre di più nell'adottare GitHub come "nuova casa" per gli sviluppatori, migrando da sistemi esistenti, potenzialmente basati su Jenkins, BitBucket, Azure DevOps e così via.
Per quanto riguarda il repository, vediamo com'è semplice fare una migrazione se questo è già basato su Git. In questo esempio, assumiamo che il repository esista in Azure DevOps, ma il principio sarà pressochè identico anche per qualsiasi altro remote.
git clone --bare https://${{ secrets.AZURE_DEVOPS_PAT }}@{organization}.visualstudio.com/{team-project}/_git/{repository}Il primo passaggio riguarda proprio il clone. E' fondamentale cercare di avere una copia quanto più fedele possibile di tutto quanto è stato pubblicato nel remote. Tuttavia, il comando di clone ha impostato il parametro bare, che in realtà non scarica alcun codice sorgente, ma rende la cartella dove stiamo andando ad effettuare il clone, essa stessa la directory .git in cui sono contenute tutte le informazioni sui branch, commit e così via.
A questo punto, se non l'abbiamo già fatto, possiamo creare un nuovo repository su GitHub utilizzando la CLI.
gh repo create {organization}/{repository} --privateE, solo infine, possiamo caricare il codice sorgente partendo dalla folder dove abbiamo fatto il clone.
git push --mirror https://${{ secrets.GITHUB_PAT }}@github.com/{organization}/{repository}.gitAnche in questo caso il comando è di push, come siamo già abituati a conoscere, con l'unica accortezza di passare il parametro mirror. Questo farà sì che non dovremo passare un branch specifico da caricare sulla nuova origin, ovvero GitHub, ma tutto ciò che sarà incluso nelle refs/ verrà caricato in automatico. Perciò, a migrazione fatta, ci ritroveremo non solo tutti i branch, ma anche tutti i tag, avendo una copia completa della history del repository di partenza.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Integrazione di Copilot in .NET Aspire
Managed deployment strategy in Azure DevOps
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Configurare OpenAI in .NET Aspire
Le cron expression di un workflow di GitHub
Recuperare gli audit log in Azure DevOps
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Analizzare il contenuto di una issue con GitHub Models e AI
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps


