Bitbucket: supprimer un dossier de l'historique Git

Il y a une limite stricte de 2 Go lors de l'hébergement de Git sur Bitbucket - si cela est dépassé, vous n'avez qu'un accès en lecture seule au référentiel. Pour éviter cela, par exemple, vous supprimez rétroactivement de gros dossiers ou fichiers de vos validations. Mais aussi dans d'autres cas (si les données d'accès sont entrées dans l'historique ou que node_modules s'est glissé à nouveau sur le maître), vous devez manipuler rétrospectivement l'historique de Git contrairement à sa nature.


Bitbucket a écrit un article détaillé à ce sujet. Pour parcourir le tout dans un cas, nous créons d'abord un nouveau référentiel:

histoire de bitbucket propre

Ensuite, nous clonons le référentiel dans un dossier vide sur la machine locale:

6ab7686fc508ce87c52b10bb5d01ee51

Maintenant, nous créons deux sous-dossiers avec des fichiers de contenu aléatoire:

6ab7686fc508ce87c52b10bb5d01ee51

Nous poussons maintenant le maître:

6ab7686fc508ce87c52b10bb5d01ee51

Maintenant, nous avons presque atteint la limite stricte de 2 Go sur Bitbucket:

histoire de bitbucket propre

Nous pouvons également vérifier cela localement (voir "size-pack"):

6ab7686fc508ce87c52b10bb5d01ee51

histoire de bitbucket propre

La tâche consiste maintenant à supprimer rétroactivement "foo" du référentiel afin de diviser par deux sa taille. Pour ce faire, nous éditons d'abord le HEAD actuel et écrivons le dossier dans le gitignore:

6ab7686fc508ce87c52b10bb5d01ee51

Enfin, nous utilisons le BFG Repo Cleaner pour supprimer le dossier (BFG nécessite un JRE actuel sur le système en tant que configuration requise):

6ab7686fc508ce87c52b10bb5d01ee51

Nous voyons maintenant le résultat localement:

6ab7686fc508ce87c52b10bb5d01ee51

histoire de bitbucket propre

Cependant, la taille du référentiel n'a pas encore changé sur Bitbucket car le garbage collector n'a pas encore été exécuté à distance et bitbucket n'exécute pas de "git gc" à chaque push:

histoire de bitbucket propre

Le support le confirme également:

histoire de bitbucket propre

Il est donc préférable d' envoyer une demande directement à support@bitbucket.org pour exécuter manuellement "git gc" dans le référentiel. Après un court laps de temps, cela a également été fait par l'équipe de support:

histoire de bitbucket propre

Si vous faites maintenant glisser le référentiel "fraîchement" vers un autre ordinateur, seulement 0,9 Go se retrouveront sur le disque. Si quelqu'un a toujours la version 1,8 Go disponible localement, un "git pull" suivi de "git gc" est suffisant.

Arrière