Sommaire

Migration d'un repo Git

Contexte

Jusqu’à présent, j’utilisais le serveur Git de mon NAS Synology.
Bien que ça a été une galère à mettre en place simplement, je m’en suis lassé…

En effet, utilisant souvent GitHub et GitLab, je me suis habitué au système de visualisation de ces outils. Avec Git, ce n’est pas des plus simple, j’utilisais alors le logiciel Fork pour cela.

J’ai donc cherché à reproduire le même fonctionnement que GitHub avec des possibilités au CI/CD. Gitlab, dans sa Community Edition (“CE”) est un très bon choix, mais ce logiciel est trop gourmant en ressources par rapport à mon utilisation.

Mon choix c’est porté sur Gitea que j’avais déjà présenté dans mon introduction à Docker car, en plus d’être un GitHub-like, permet d’y ajouté des fonctionnalités de CI/CD (avec Drone par exemple).
Une fois cela installé, j’ai souhaité migrer mes données sans perdre l’historique de Git. C’est donc ce que je vous partage ici.

Migration

Pour effectuer la migration, il faut déjà un repo initié sans contenu sur le nouveau serveur Git (chose que j’ai faite via l’interface Web de Gitea).

Dans un premier temps, on va cloner notre repo dans un dossier temporaire (que vous pourrez supprimer une fois la migration finie) :

1
2
git clone ssh://myuser@192.168.17.92/volume1/GitProject/MonBlog.git MonDossierTemp
cd MonDossierTemp

On va devoir maintenant récupérer toutes les branches. Pour les lister, on utilise la commande git branch -a.
Pour récupérer les éléments de chaque branche, on utilise la commande git checkout :

1
git checkout master

Dans cet exemple, on récupère donc la branche master.

Ensuite, on télécharge l’historique du repo (commits, fichiers et références) en local :

1
git fetch --tags

On vérifie le local :

1
2
git tag
git branch -a

À partir de là, on va supprimer le lien d’origine :

1
git remote rm origin

Et on ajoute le nouveau lien d’origine :

1
git remote add origin https://mon.domaine.mu/Scrample/MonBlog.git

Ainsi, on push le tout dans le nouveau repo :

1
git push origin --all

Et voila ! Enfin presque…

Submodule

Vous l’aurez compris en regardant les liens, cet article montre la migration de mon repo hébergeant les fichiers de ce site.
Utilisant un thème Hugo en tant que sous-module, le dossier du thème était vide !

J’ai donc effectué les actions suivantes afin de récupérer ce submodule :

1
2
3
git rm --cached .\themes\LoveIt\  
rmdir .\themes\LoveIt\
git submodule add https://github.com/dillonzq/LoveIt.git themes/LoveIt