Migrating a Git repository to LFS

Ce tutoriel en anglais indique comment utiliser la commande git lfs migrate pour convertir les éléments « lourds » d’un dépôt Git en LFS. Cela devrait être un bon point de départ pour alléger le dépôt de HeLa Game.

1 Like

Il existe aussi un guide fait par Gitlab pour réduire la taille des dépôts. Je n’ai rien testé de tout ça mais je vous recommande de faire de nombreuses expérimentations avant de valider vos choix par un git push qui va nettoyer votre dépôt public. → Reduce repository size | GitLab

Ok j’ai mis en place avec @how installé git LFS sur le repo de Hela, en suivant ce tuto
L’ensemble des .png .jpg .stex .pdf sera désormais stocké sur LFs et allégera beaucoup les téléchargements du repository lorsque nous ferons des modifs de codes.

Aussi j’ai envie de contacter Celia Hodent pour lui parler de notre projet… Sciences cognitives et enjeux éthiques en design - Replay JRES

Ok cool pour le repo. Hier fin d’après-midi j’ai pushé une modif sur le système de heal. Maintenant le bouton Heal soigne tous les personnages à la fois. Est-ce que tu as pu récupérer ce changement ?

C’est une super idée de contacter Célia Hodent, ce serait une ressource incroyable

Nop malheureusement je ne m’en suis aperçue que après avoir lancé le git push --force j’ai l’impression que l’on a agit à peu près au même moment…
Je crois qu’il faut que tu retelecharge le repo et que tu refasse la modif… je m’excuse platement…
Mais ne le fais pas tout de suite, on va encore splitter les repository en submodules entre Hela nana et jeu videa historique
Ainsi ce sera encore plus léger et surtout si on fait un autre projet on pourra simplement faire un autre submodule

Je la contacte dès que j’en ai fini avec le git cette aprem sans doute

Ok bon je garde ma version du repo pour le moment et je referai la modif quand tes déplacements de repo seront finis

oui mais à mon avis il faudra que tu évite de faire un merge, il vaut vraiment mieux que tu dowload les nouveaux repo et que tu refasse tes modifs sinon ça va être le bordel.

On devrait avoir fini d’ici 1h00 je te ping

Oui oui mais je garde ma version pour le moment comme ça j’ai juste à copier-coller le code que j’ai modifié hier

1 Like

ok on a maintenant 3 repository sur les oiseaux https://framagit.org/lesoiseaux
Je vais refaire les read me et les icones cette après midi, en attendant tu peux déjà push des modifs sur
https://framagit.org/lesoiseaux/hela

Je me demande si c’est une bonne idée de faire des modules ou non… On en discute demain si tu veux.
merci @how pour le soutien

1 Like

Merci à git-filter-repo qui nous a bien aidé !

Alors natacha / hela · GitLab me renvoie une erreur 404
Et je ne vois toujours qu’un seul repo jeu videa si je remonte un niveau au-dessus.

Je ne sais pas ce qui se passe :frowning:

alors la recette c’était:

Après avoir installé lfs come expliqué ci dessus , nous avons commencé par copier l’ensemble du repository dans un nouveau dossier nommé hela

git clone --no-local jeu-vide-a/.git hela

puis nous avons utilisé git-filter-repo pour ne conserver que les éléments qui concernant hela git attribute qui défini ce qui sera porté dans lfs la license et l’ensemble des fichiers hela.

git filter-repo --path Hela --path .gitattributes --path FREE\ ART\ LICENSE\ 1.3

Puis nous avons renommé la branche master en main:

git branch -m main

Puis nous avons créé un nouveau repository sur framagit/lesoiseaux:

git remote add origin git@framagit.org:lesoiseaux/hela.git

Puis nous avons push l’ensemble sur ce nouveau repo:

git push -u origin main

Et nous avons recommencé l’opération pour les 2 autres repository (nana et videa historique) en copiant à chaque fois à partir du repository d’origine puis utilisant git-filter.repo pour ne conserver que ce que nous vouloins dans ce nouveau repo (code, éléments graphiques, git attribute, license du )puis renommer master en main puis création du nouveau repo et push.

oooops c’est moi j’avais oublié de gérer les permissions, je t’ai mis maintainer de hela et puis j’ai rendu le repo public.
Mais je vois qu’il n’a toujours pas fini d’uploader… le réseau ici est vraiment vraiment super lent…

Attention, dans videa-historique les --path s’appliquent à ce qu’on veut garder :

git clone --no-local jeu-vide-a/.git videa-historique
cd videa-historique
git filter-repo --path puzzle-game --path tests-amelie --path videa-02 --path .gitattributes --path FREE\ ART\ LICENSE\ 1.3
git branch -m main
git remote add origin git@framagit.org:lesoiseaux/videa-historique.git
git push -u origin main

Et avant cela, nous avons effectué la manoeuvre :

Pour transférer tous les binaires dans LFS

:warning: Cela prend un temps considérable…

cd jeu-vide-a
# D'abord on se renseigne
git lfs migrate info --everything
# Ensuite on inclut les fichier *binaires* (le texte se diff et se compresse bien)
git lfs migrate import --everything --include="*.stex,*.png,*.pdf"
# Et là on se fait peur
git push --force

Cette manoeuvre récrit tout l’historique depuis le début (d’où le push --force) et éventuellement laisse les images cassées (cela peut arriver, pour réparer il suffit de faire ) :

cd jeu-vide-a
# Récupérer les fichers LFS
git lfs fetch --all
# Ressortir les images en tant que telles
git lfs checkout **/*.{png,pdf,stex}

:warning: la notation **/*.{png,pdf,stex} est un raccourci de zsh pour demander l’ensemble des fichiers dans tous les sous-répertoires qui finissent en .png, .pdf, ou .stex. En bash on préférera le faire en plusieurs fois. Peut-être la commande git-lfs-checkout fournit-elle -r pour récursif, mais je n’ai pas vérifié.

Et les git branch -m main c’était pour en profiter et renommer mastermain

Bon je ne sais pas si je ne comprends vraiment pas ou qu’est-ce qui se passe, mais chez moi ça ne marche pas. Je ne vois pas sur le Framagit de dépôt “hela”, c’est toujours Jeu Videa. Et quand je le clone, plus aucune image ne fonctionne dans Godot. Elles sont corrompues dans le dossier.
Est-ce qu’on a une solution à ça ? Sinon je dois recopier les images telles que je les avais avant dans le dossier, mais on en revient au point de départ. Et je n’ai pas très envie de devoir faire ça dans tous les cas.
Donc voilà, je suis bloquée à ce point-là