Kiedy uruchamiam „git gui”, pojawia się wyskakujące okienko z napisem
To repozytorium zawiera obecnie około 1500 luźnych obiektów.
Następnie sugeruje kompresję bazy danych. Robiłem to już wcześniej i zmniejsza to liczbę luźnych obiektów do około 250, ale to nie blokuje wyskakującego okienka. Ponowne kompresowanie nie zmienia liczby luźnych obiektów.
Nasz obecny przepływ pracy wymaga znacznego wykorzystania „rebase”, ponieważ przechodzimy z Perforce, a Perforce jest nadal kanonicznym SCM. Gdy Git stanie się kanonicznym SCM, będziemy wykonywać regularne połączenia, a problem luźnych obiektów powinien zostać znacznie złagodzony.
W międzyczasie naprawdę chciałbym, aby to „pomocne” wyskakujące okienko zniknęło.
Odpowiedzi:
Ponieważ nikt nie miał jeszcze odpowiedzi, zajrzałem do kodu, aby zobaczyć, jak usunąć kod, który wyświetla to okno dialogowe. Znalazłem
hint_gc
procedurę, która to robi i miejsce, w którym się nazywa. Jednocześnie zauważyłem, że pod koniec 2011 roku dodano opcję konfiguracji wyłączania okna dialogowego . Zmiana ta (część git-gui 0.16.0) został włączony do Mainline git w dniu 2011-12-14 .Jeśli więc używasz Git w wersji 1.7.9 lub nowszej, możesz wyłączyć okno ostrzegawcze za pomocą następującego polecenia:
Jeśli używasz starszej wersji, możesz edytować
/lib/git-core/git-gui
i usunąćafter 1000 hint_gc
linię lub edytować/usr/share/git-gui/lib/database.tcl
i usunąć treśćhint_gc
procedury. (Te ścieżki plików znajdują się w Cygwin - w innych środowiskach pliki mogą znajdować się w innych lokalizacjach. W przypadku systemu Windows tak jestc:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
)źródło
after 1000 hint_gc
aby ostrzeżenie pojawiło się po10000
luźnych przedmiotach?after 1000
odnosi się do liczby milisekund oczekiwania na wyświetlenie okna dialogowego. Zwiększając ją do „10000”, okno dialogowe będzie nadal wyświetlane, ale zajmie to 10 sekund.database.tcl
zawiera definicję limitu i można go zwiększyć, aby zmniejszyć częstotliwość dialogów.Aktualizacja:
git prune
„rozwiązałoby” problem, ponieważ usunie te luźne przedmioty(
git gc
połączeniagit prune
, ale domyślnie tylko w przypadku luźnych przedmiotów starszych niż dwa tygodnie).Jednak, jak wspomina OP Michael Donohue w komentarzach:
Oryginalna odpowiedź:
Problem z "
git gc
" nieusuwaniem wszystkich luźnych obiektów został już zgłoszony (koniec 2008 r., " "git gc
"Nie wydaje się już usuwać luźnych obiektów "Więc w twoim przypadku, czy „
git prune
” byłoby pomocne?(prawdopodobnie z użyciem „now” w
gc.pruneexpire
zmiennej konfiguracyjnej, potrzebnej do wystąpienia powyższego zachowania).Masz również (z tego samego wątku):
źródło
Gdy wyskakuje okienko „Loose Object”, wiem, że czas uruchomić garbage collector git:
Następnie wyskakujące okienko zniknie.
Aktualizacja: (zgodnie z sugestią TED)
wyodrębniłem poniższą procedurę z
git/share/git-gui/lib/database.tcl
Możesz ją zmodyfikować, aby spełniała Twoje potrzeby.
źródło
git gc
z linii poleceń rozwiązało problem ... samo kliknięcieok
w git gui jakoś nie załatwiło sprawy ...Hmmmm .... Nie widzę argumentu wiersza poleceń na to w dokumentacji .
Przypuszczam, że zawsze można było usunąć jego źródło, wyjąć kod okna dialogowego i przebudować.
źródło