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} --private
E, 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}.git
Anche 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
Cancellare una run di un workflow di GitHub
Collegare applicazioni server e client con .NET Aspire
Eliminare una project wiki di Azure DevOps
Effettuare il refresh dei dati di una QuickGrid di Blazor
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Scrivere selettori CSS più semplici ed efficienti con :is()
Sostituire la GitHub Action di login su private registry
Usare il colore CSS per migliorare lo stile della pagina
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creare un webhook in Azure DevOps