# Migrating a Git repository to LFS

**URL:** https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211
**Category:** Jeu vidé-A
**Created:** [November 27, 2021, 10:10am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211 "2021-11-27T10:10:00Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![how](https://ps.zoethical.org/user_avatar/ps.zoethical.org/how/32/2236_2.png) [@how](https://ps.zoethical.org/u/how)
#### Post date: [November 27, 2021, 10:10am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/1 "2021-11-27T10:10:00Z")

</div>

> **[Tutorial](https://github.com/git-lfs/git-lfs/wiki/Tutorial#migrating-existing-repository-data-to-lfs)**
>
> Git extension for versioning large files. Contribute to git-lfs/git-lfs development by creating an account on GitHub.

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.

---

<div class="post-metadata">

### Author: ![how](https://ps.zoethical.org/user_avatar/ps.zoethical.org/how/32/2236_2.png) [@how](https://ps.zoethical.org/u/how)
#### Post date: [December 7, 2021, 3:50pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/2 "2021-12-07T15:50:08Z")

</div>

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](https://docs.gitlab.com/ee/user/project/repository/reducing_the_repo_size_using_git.html)

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 23, 2022, 5:20pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/3 "2022-05-23T17:20:02Z")

</div>

Ok j’ai mis en place avec @how installé git LFS sur le repo de Hela, en suivant [ce tuto](https://github.com/git-lfs/git-lfs/wiki/Tutorial#adding-git-lfs-to-a-pre-existing-repo)  
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](https://replay.jres.org/w/gJ7r2fV5AHw4FefuALawuw)

---

<div class="post-metadata">

### Author: ![Amelie\_Dumont](https://ps.zoethical.org/user_avatar/ps.zoethical.org/amelie_dumont/32/1095_2.png) [@Amelie\_Dumont](https://ps.zoethical.org/u/Amelie_Dumont)
#### Post date: [May 24, 2022, 10:11am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/4 "2022-05-24T10:11:35Z")

</div>

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

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 24, 2022, 10:17am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/5 "2022-05-24T10:17:31Z")

</div>

> [@Amelie\_Dumont](#):
>
> Est-ce que tu as pu récupérer ce changement ?

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

> [@Amelie\_Dumont](#):
>
> C’est une super idée de contacter Célia Hodent, ce serait une ressource incroyable

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

---

<div class="post-metadata">

### Author: ![Amelie\_Dumont](https://ps.zoethical.org/user_avatar/ps.zoethical.org/amelie_dumont/32/1095_2.png) [@Amelie\_Dumont](https://ps.zoethical.org/u/Amelie_Dumont)
#### Post date: [May 24, 2022, 10:23am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/6 "2022-05-24T10:23:25Z")

</div>

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

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 24, 2022, 10:25am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/7 "2022-05-24T10:25:34Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Amelie\_Dumont](https://ps.zoethical.org/user_avatar/ps.zoethical.org/amelie_dumont/32/1095_2.png) [@Amelie\_Dumont](https://ps.zoethical.org/u/Amelie_Dumont)
#### Post date: [May 24, 2022, 10:33am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/8 "2022-05-24T10:33:26Z")

</div>

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

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 24, 2022, 11:31am UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/9 "2022-05-24T11:31:53Z")

</div>

ok on a maintenant 3 repository sur les oiseaux [https://framagit.org/lesoiseaux](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](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

---

<div class="post-metadata">

### Author: ![how](https://ps.zoethical.org/user_avatar/ps.zoethical.org/how/32/2236_2.png) [@how](https://ps.zoethical.org/u/how)
#### Post date: [May 24, 2022, 12:19pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/10 "2022-05-24T12:19:02Z")

</div>

Merci à [git-filter-repo](https://github.com/newren/git-filter-repo) qui nous a bien aidé !

---

<div class="post-metadata">

### Author: ![Amelie\_Dumont](https://ps.zoethical.org/user_avatar/ps.zoethical.org/amelie_dumont/32/1095_2.png) [@Amelie\_Dumont](https://ps.zoethical.org/u/Amelie_Dumont)
#### Post date: [May 24, 2022, 12:54pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/11 "2022-05-24T12:54:10Z")

</div>

Alors [natacha / hela · GitLab](https://framagit.org/lesoiseaux/hela) 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 ☹

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 24, 2022, 1:16pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/12 "2022-05-24T13:16:20Z")

</div>

alors la recette c’était:

Après avoir installé lfs come expliqué [ci dessus](https://ps.zoethical.org/t/documentation-hela/5771/7) , 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](mailto: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.

---

<div class="post-metadata">

### Author: ![natacha](https://ps.zoethical.org/user_avatar/ps.zoethical.org/natacha/32/3145_2.png) [@natacha](https://ps.zoethical.org/u/natacha)
#### Post date: [May 24, 2022, 1:19pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/13 "2022-05-24T13:19:06Z")

</div>

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…

---

<div class="post-metadata">

### Author: ![how](https://ps.zoethical.org/user_avatar/ps.zoethical.org/how/32/2236_2.png) [@how](https://ps.zoethical.org/u/how)
#### Post date: [May 24, 2022, 1:34pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/14 "2022-05-24T13:34:38Z")

</div>

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

```shell
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**
>
> ⚠ Cela prend un temps considérable…
> 
> ```auto
> 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 ) :
> 
> ```auto
> 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}
> 
> ```
> 
> ⚠ 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 `master` → `main`

---

<div class="post-metadata">

### Author: ![Amelie\_Dumont](https://ps.zoethical.org/user_avatar/ps.zoethical.org/amelie_dumont/32/1095_2.png) [@Amelie\_Dumont](https://ps.zoethical.org/u/Amelie_Dumont)
#### Post date: [May 24, 2022, 4:50pm UTC](https://ps.zoethical.org/t/migrating-a-git-repository-to-lfs/5211/15 "2022-05-24T16:50:02Z")

</div>

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à
