2014-06-30 20 views
21

Riassunto del mio problema: Uno dei miei repository privati ​​su Bitbucket è improvvisamente più che raddoppiato di dimensioni dopo che ho spinto un'aggiunta di poche centinaia di byte a due file esistenti. Il repository è ora di oltre 2 GB, che ha causato a Bitbucket di metterlo in modalità di sola lettura. Perché è in modalità di sola lettura, non posso spingere le modifiche che ridurrebbero le dimensioni del repository. (Catch 22.)Come ridurre le dimensioni del repository Git su Bitbucket?

Dettagli: La mia azienda ha recentemente iniziato a ospitare repository git su Bitbucket. Uno dei repository di cui sono responsabile aveva una dimensione di circa 973 MB, che era scomodamente vicino al limite di 1 GB. Per ridurre le dimensioni del repository, ho seguito le istruzioni nell'articolo di documentazione di Bitbucket Split a repository in two e trasferito circa 450 MB di documentazione e file di aiuto online nel proprio repository privato. Ho quindi seguito le istruzioni negli articoli della documentazione Bitbucket Reduce repository size e Maintaining a git repository, in particolare:

git count-objects -vH mi ha mostrato un pacchetto di dimensioni di circa 973 MB.

Ho eseguito git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc' HEAD per rimuovere la directory doc (che è il contenuto che ho spostato nel nuovo repository).

Ho eseguito il seguente comando per scadere riferimento e potare:

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d 
git reflog expire --expire=now --all 
git gc --prune=now 

git count-objects -vH poi mi ha mostrato una dimensione-pacchetto di 881,1 MIB e du -sh .git/objects restituito 882m. Sono rimasto deluso che si spostano su 450MB di ridurre le dimensioni dei pronti contro termine con meno di 90 MB, ma spinto le modifiche bitbucket comunque:

git push --all --force 
git push --tags --force 

La pagina delle impostazioni per la copia Bitbucket del pronti contro termine ha continuato a mostrare una dimensione di 973MB. Ho effettuato il logout, ho aggiornato il browser, ho effettuato l'accesso, ma ciò non ha aiutato - la dimensione del repository è rimasta a 973 MB.

Questa mattina (tre giorni dopo le modifiche descritte sopra) ho apportato un paio di aggiunte minori a due file esistenti che hanno aumentato le dimensioni dei file di un totale inferiore a 1 KB, li ho aggiunti e li ho trasferiti al mio repository locale, quindi spinto il cambiamento in Bitbucket. Pochi minuti dopo ho dato un'occhiata alla pagina di Bitbucket per il repository e ho visto un banner rosso di avvertimento che mi informava "Questo repo supera il limite di 2 GB ed è in modalità di sola lettura." La pagina delle impostazioni ora dice che il repository ha una dimensione di 2,3 GB.

La spinta di poche centinaia di byte aggiunti a due file era sicuramente l'unica attività che si verificava sul repository remoto negli ultimi tre giorni, secondo Bitbucket. Quella spinta potrebbe non essere stata la causa del pronti contro termine più che raddoppiare le dimensioni, ma i due eventi erano strettamente correlati nel tempo.

git reflog show non restituisce nulla.

Clonare una nuova copia in una directory alternativa, quindi eseguire git count-oggetti mi fornisce un pacchetto di dimensioni di 881,29 MiB.

Il repository locale si trova su un sistema CentOS 6.5. la versione git è 1.8.5.3.

Domande

  1. Perché spostare 450MB di file fuori repo ha solo ridurre le dimensioni del mio repo locale 90MB?
  2. Perché anche questa modesta riduzione non è stata trasferita al repository remoto su Bitbucket?
  3. In che modo le dimensioni del repository remoto sono passate da 973 MB a 2,3 GB?
  4. Come posso risolvere il problema? Non riesco a spingere al repository remoto anche con il flag --force. Qualsiasi push mi ottiene il messaggio di errore "conq: repository è in modalità di sola lettura (oltre il limite di dimensioni di 2 GB). fatale: impossibile leggere dal repository remoto."
+2

Suona come qualcosa che dovresti chiedere al supporto di Bitbucket: -/ –

+0

@dgvid Effettivamente correndo nello stesso problema (aggiunto un file con una dimensione di alcuni kilobyte e la dimensione del repository gonfiato) - fammi sapere cosa trovi. –

+0

@PhilB vedere la mia risposta. Bottom line: sconosciuto. – dgvid

risposta

23

Dopo aver parlato con il supporto tecnico Bitbucket, ora posso rispondere ad alcune delle mie domande:

  1. Perché spostare 450MB di file fuori repo solo ridurre le dimensioni del mio repo locale 90MB ? Qualcosa nella storia è mancato. I non esattamente cosa, ma il comando filtro-ramo ha perso qualcosa. Sono riuscito a ridurre le dimensioni del repository di 450 MB eseguendo l'utilità BFG Repo-Cleaner.
  2. Perché anche questa modesta riduzione non è stata inviata al repository remoto su Bitbucket? Lo ha fatto, ma il supporto di Bitbucket deve quindi eseguire git gc su dal loro lato. Si può contattare la richiesta di Bitbucket e chiedere loro di eseguire git gc su un repo.
  3. In che modo le dimensioni del repository remoto sono passate da 973 MB a 2,3 GB? Sconosciuto. Il supporto tecnico di Bitbucket non ha avuto la risposta a questo uno .
  4. Come posso risolvere il problema? Contatta il supporto di Bitbucket. Possono mettere un repository in modalità lettura-scrittura in modo da poter spingere un repository più piccolo e possono eseguire git gc alla fine.
+5

+1 per il supporto dei contatti: la mia esperienza era sostanzialmente identica. –

+1

Punto 4: c'è un'alternativa al supporto di contatto: [git reset --hard HEAD ~ 1; git push -f] (https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html#Reducerepositorysize-Removetherepositorylimitation) - ma ** fare prima un backup **! –

+0

reset git --hard HEAD ~ 1; git push -f non ha funzionato per me, ho ancora il messaggio di limite. Ho contattato il supporto, in attesa di una risposta:/ – Juancho

13

Ho trovato che il modo più semplice per ridurre le dimensioni dei pronti contro termine Bitbucket se sei oltre il limite di 2 GB è quello di

  1. Creare un ramo su Bitbucket
  2. Cancellare quel ramo su Bitbucket

Ciò dovrebbe attivare Bitbucket per eseguire git gc sul repository.

+0

Completamente ha funzionato per me. – xaviert

+0

Ha funzionato anche per me – Tijn

+0

Funziona solo quando hai più di 2 GB? Perché io sono a 1.5 GB e questo trucco non ha funzionato. – Warface

Problemi correlati