2016-06-09 12 views
12

Vor nicht langer Zeit haben wir den Wechsel von SVN zu Git gemacht.Das ganze Team bekommt Nachrichten "zu viele unerreichbare lose Objekte"

Vor ein paar Tagen, wurde mir klar, dass alle unsere Teams diese Nachrichten erhält, wenn sie drücken:

$ 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 

Ich dachte, es war eine Zeit lang von meinem Computer kommen, bis ich merke, dass jeder das gleiche hat Probleme.

Unnötig zu sagen, es gibt keine gc.log in meinem .git-Ordner, und die Verwendung von 'git gc' oder 'git prune' hat keine Wirkung.

Also meine Frage ist: Könnte es sein, dass das Repository gehostet auf dem Server irgendwie nicht sauber ist? Wenn ja, wie reinige ich es eigentlich?

Alle Lösungen, die ich bisher gefunden habe, beziehen sich auf lokale Kopien von Repositories.

Wir verwenden auch Gitlab, um unsere Repos zu hosten.

EDIT: Es ist erwähnenswert, dass ich seit ich diese Frage gepostet habe versucht auch "Housecleaning" das Repository mit Gitlab aber bisher ohne Ergebnis. Diese

Dank

+0

Welche Version von GitLab verwenden Sie? – VonC

Antwort

12

wird gefolgt von issue 14357 (Gitlab 8.6- oder weniger)

Das Handbuch fix war:

  • SSH in worker1
  • cd in die Gitlab-org/Gitlab -ce Verzeichnis
  • ran rm gc.log, enthielt dies nur die Zeile "Warnung: Es gibt zu viele nicht erreichbare lose Objekte ; laufen ‚git prune‘ um sie zu entfernen.“
  • lief git prune und betete, dass es nicht die Dinge brechen hat

(was es nicht zum Glück hat), aber es sieht aus wie, beginnend Gitlab 8,7, auto gc is disabled.
Dies ist auch im Zusammenhang mit der (still opened) issue 13524 getan:

Regel nach einer Fütterungsmaterial, ändern oder eine andere Aktion, die eine Kraft Push erfordert können wir Commits baumelte haben

eine solche. "Dereferenzierte" Commits gehen verloren wegen git gc, die intern oder mit Hilfe von GitLab Housekeeping Features ausgeführt werden können.

Wenn es passiert, dass eine Diskussion zu einem bestimmten Commit angehängt wurde - es ist nicht verfügbar, nachdem der dereferenzierte Commit Müll-gesammelt wurde.

Commits werden in Push-Ereignissen aufgezeichnet und sind über Systemnotizen verfügbar, die zur Zusammenführungsanforderung hinzugefügt wurden. Derzeit wird in GitLab ein Fehler von 500 angezeigt.

+0

ha, danke. Ich suchte nach einem ähnlichen Problem, vermisste dieses jedoch anscheinend. Wir werden versuchen, die notwendigen Schritte heute Abend durchzuführen und zu sehen, ob das Problem behoben wird. – jlengrand

+0

@jlengrand OK, aber welche Version von GitLab verwenden Sie gerade? – VonC

+0

Die Version ist 8.6.4 :) – jlengrand