Migrare un repository che contiene large file storage objects in GitHub

di Matteo Tumiati, in DevOps,

In un articolo precedente (https://www.dopsitalia.com/script/82/Migrare-Repository-Git-Azure-DevOps-GitHub.aspx) abbiamo già osservato come sia facile migrare un repository di git. Questo è possibile indipendentemente dalla sorgente, che potrebbe essere su Azure DevOps, così come su BitBucket o altro, perchè alla fine sotto il cofano c'è sempre git come engine.

I repository, però, stanno diventando sempre più complessi e possono contenere anche dati di grandi dimensioni, come immagini di macchine virtuali, sample di dati per l'esecuzione di test, audio, video e così via. Questi dati, solitamente, non vengono conservati come oggetti "standard" di git, ma potrebbero richiedere l'uso di git-lfs, ovvero Git Large File Storage.

Il lavoro di git-lgs è quello di rimpiazzare questi file di grandi dimensioni con dei semplici puntatori all'interno di git, così che si possa fare il clone del repository velocemente, se abbiamo bisogno di una fix, indipendentemente da questi file "pesanti".

Per integrare il codice dell'esempio precedente, nella fase di clone, dobbiamo integrare questi comandi:

git clone --bare <git-url> <folder>
cd <folder>
git lfs fetch --all

Così facendo, non cloniamo il repository, ma solo i puntatori, inclusi gli oggetti contenuti in git-lfs.

Successivamente, possiamo procedere al push, includendo anche gli oggetti di git-lfs.

git push --mirror <git-url>
git lfs push --all <git-url>

L'uso di git-lfs in GitHub è soggetto a limitazioni e costi aggiuntivi in base alla dimensione degli oggetti e alla banda utilizzata nel clone degli oggetti stessi.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi