När du är värd för Git på Bitbucket finns det en hård gräns på 2 GB - om detta överskrids har du bara skrivskyddad åtkomst till förvaret. För att förhindra detta kan du till exempel ta bort stora mappar eller filer i efterhand från dina åtaganden. Men även i andra fall (om åtkomstdata har gått in i historiken eller nod_modules har glidit tillbaka till master) måste du retroaktivt manipulera Git-historien, i motsats till dess natur.
Bitbucket har skrivit en detaljerad artikel om detta själv. För att gå igenom det hela på ett ärende skapar vi först ett nytt arkiv:
Sedan klonar vi förvaret till en tom mapp på den lokala maskinen:
6ab7686fc508ce87c52b10bb5d01ee51
Nu skapar vi två undermappar med filer med slumpmässigt innehåll:
6ab7686fc508ce87c52b10bb5d01ee51
Vi driver nu på mästaren:
6ab7686fc508ce87c52b10bb5d01ee51
Nu har vi nästan nått den hårda gränsen på 2 GB på Bitbucket:
Vi kan också kontrollera detta lokalt (se "storlek-pack"):
6ab7686fc508ce87c52b10bb5d01ee51
Uppgiften är nu att retroaktivt ta bort "foo" från förvaret för att halvera dess storlek. För att göra detta redigerar vi först den aktuella HEAD och skriver mappen i gitignore:
6ab7686fc508ce87c52b10bb5d01ee51
Slutligen tar vi bort mappen med hjälp av BFG Repo Cleaner (BFG kräver en aktuell JRE på systemet som ett systemkrav):
6ab7686fc508ce87c52b10bb5d01ee51
Vi kan nu se resultatet lokalt:
6ab7686fc508ce87c52b10bb5d01ee51
Förvarets storlek har dock inte ändrats på Bitbucket eftersom skräpsamlaren ännu inte har utförts på distans och bitbucket utför inte ett "git gc" med varje tryck:
Detta bekräftas också av stödet:
Så det är bäst att skicka en begäran direkt till support@bitbucket.org för att manuellt köra "git gc" i förvaret. Efter en kort tid gjordes detta också av supportteamet:
Om du "nyligen" flyttar förvaret till en annan dator hamnar bara 0,9 GB på disken. Om någon har 1,8 GB-versionen tillgänglig lokalt är en "git pull" följt av "git gc" tillräcklig.