clean git

situation initiale :
--------------------
sur le serveur
git init --bare projet

sur le client
git clone root@2i.raphaelpiccolo.com:/root/projet projet
git clone root@2i.raphaelpiccolo.com:/root/projet projet2
git clone root@2i.raphaelpiccolo.com:/root/projet projet3

chacun des dossier projet* font environ 50ko

ajouter des fichiers de merde sur le 1er client
cd projet
git add v.mp4
git commit -m projet
git push

projet fait maintenant 70mo.

on peut puller sur le 2e git
cd projet2
git pull
projet2 fait maintenant 70mo aussi.

lancer le nettoyage sur un des clients :
----------------------------------------
cd projet
git filter-branch -f --index-filter 'git rm -rf --cached --ignore-unmatch *.mp4' --prune-empty -- --all
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now

projet fait maintenant 50ko.

envoyer sur le serveur et aux autres developpeurs :
---------------------------------------------------
cd projet
git push origin master --force

puller sur l'autre client
cd projet2
git pull
le dossier n'a réduit de taille qu'a moitié. (35mo) car la video est toujours dans l'archive git locale mais plus dans le dossier.
il faut relancer les commandes de nettoyage :
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now
projet2 fait maintenant 50ko.

par contre sur projet3 la video n'avait pas encore été pullée
cd projet3
git pull
projet3 fait maintenant 50ko.

une autre technique est de cloner le repo une fois le 1er clean effectué, mais attention à bien backup et remettre tous les fichiers non gérés par git : config, uploads, etc
rm -rf projet2
git clone root@2i.raphaelpiccolo.com:/root/projet projet2

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.