2016-06-09 18 views
12

Non molto tempo fa, abbiamo effettuato il passaggio da SVN a Git.Tutta la squadra riceve "troppi oggetti non raggiungibili"

Qualche giorno fa, mi sono reso conto che tutto il nostro team di ottiene quei messaggi quando si spingono:

$ git push 
Counting objects: 32, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (32/32), 2.94 KiB | 0 bytes/s, done. 
Total 32 (delta 14), reused 0 (delta 0) 
error: The last gc run reported the following. Please correct the root cause 
and remove gc.log. 
Automatic cleanup will not be performed until the file is removed. 

warning: There are too many unreachable loose objects; run 'git prune' to remove them. 

To [email protected]:root/xxx.git 
    15c3bbb..69e6d8b xxxx -> xxx 

ho pensato che era venuta dal mio computer per un po ', fino a quando mi rendo conto che tutti hanno lo stesso problemi.

Inutile dire che non c'è gc.log nella mia cartella .git, e l'utilizzo di 'git gc' o 'git prune' non ha alcun effetto.

Quindi la mia domanda è: potrebbe essere che il repository ospitato sul server non sia in qualche modo pulito? In tal caso, come posso effettivamente pulirlo?

Tutte le soluzioni che ho trovato finora riguardano le copie locali dei repository.

Inoltre, utilizziamo Gitlab per ospitare i nostri repository.

EDIT: Vale la pena dire che da quando ho postato questa domanda ho anche provato "Housecleaning" il repository usando Gitlab ma senza risultati fino ad ora.

Grazie

+0

Quale versione di GitLab stai utilizzando? – VonC

risposta

12

Questo è seguito da issue 14357 (GitLab 8.6- o meno)

La correzione manuale è stato:

  • SSH in worker1
  • cd nella gitlab-org/gitlab -ce directory
  • correva rm gc.log, questo conteneva solo la riga "avviso: ci sono troppi oggetti sciolti non raggiungibili ; eseguire 'prune git' per rimuoverli."
  • corse git prune e pregò non rompere le cose (quali per fortuna non ha fatto)

Ma sembra che, a partire GitLab 8.7, auto gc is disabled.
Questo viene fatto anche nel contesto di (still opened) issue 13524:

in genere dopo un rebase, modificare o altra azione che richiede una spinta forza possiamo abbiamo penzolava commit

Tale. I commit "dereferenziati" si perdono a causa di git gc che possono essere eseguiti internamente o utilizzando le funzionalità di GitLab Housekeeping.

Se si verifica una discussione associata a un commit specifico, non è disponibile dopo che il commit con dereferenziamento è stato sottoposto a garbage collection.

I commit vengono registrati negli eventi push e sono disponibili tramite le note di sistema aggiunte per unire la richiesta e attualmente questo genera l'errore 500 in GitLab.

+0

ha, grazie. Ho cercato un problema simile, ma ho perso questo apparentemente. Cercheremo di eseguire i passaggi necessari stasera e vedere se risolve il problema. – jlengrand

+0

@jlengrand OK, ma quale versione di GitLab stai attualmente utilizzando? – VonC

+0

La versione è 8.6.4 :) – jlengrand

Problemi correlati