Lors de l'hébergement de Git sur Bitbucket, il existe une limite stricte de 2 Go - si elle est dépassée, vous n'avez qu'un accès en lecture seule au référentiel. Pour éviter cela, par exemple, vous pouvez supprimer rétrospectivement de gros dossiers ou fichiers de vos commits. Mais aussi dans d'autres cas (si les données d'accès sont entrées dans l'historique ou que node_modules est retourné au master), vous devez manipuler rétrospectivement l'historique de Git, contrairement à sa nature.
Bitbucket a écrit un article détaillé à ce sujet. Afin de tout parcourir sur un cas, nous créons d'abord un nouveau référentiel:
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:
Nous pouvons également vérifier cela localement (voir "size-pack"):
6ab7686fc508ce87c52b10bb5d01ee51
La tâche est maintenant de supprimer rétroactivement "foo" du référentiel pour réduire sa taille de moitié. Pour ce faire, nous éditons d'abord le HEAD actuel et écrivons le dossier dans gitignore:
6ab7686fc508ce87c52b10bb5d01ee51
Enfin, nous supprimons le dossier à l'aide du BFG Repo Cleaner (BFG nécessite un JRE actuel sur le système comme exigence système):
6ab7686fc508ce87c52b10bb5d01ee51
Nous pouvons maintenant voir le résultat localement:
6ab7686fc508ce87c52b10bb5d01ee51
Mais sur Bitbucket, la taille du référentiel n'a pas encore changé, car le garbage collector n'a pas encore été exécuté à distance et bitbucket n'exécute pas un "git gc" à chaque push:
Ceci est également confirmé par le support:
Il est donc préférable d' envoyer une requête 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 d'assistance:
Si vous déplacez «fraîchement» le référentiel vers un autre ordinateur, seulement 0,9 Go se retrouvera sur le disque. Si quelqu'un a la version 1,8 Go disponible localement, un "git pull" suivi de "git gc" est suffisant.