Когда я запускаю git gui, я получаю всплывающее окно с надписью
В настоящее время в этом репозитории около 1500 незакрепленных объектов.
Затем он предлагает сжать базу данных. Я делал это раньше, и это уменьшает количество свободных объектов примерно до 250, но это не подавляет всплывающее окно. Повторное сжатие не меняет количество незакрепленных объектов.
Наш текущий рабочий процесс требует значительного использования «rebase», поскольку мы переходим с Perforce, а Perforce по-прежнему является каноническим SCM. Как только Git станет каноническим SCM, мы будем выполнять регулярные слияния, и проблема свободных объектов должна быть значительно уменьшена.
А пока я бы очень хотел убрать это «полезное» всплывающее окно.
Ответы:
Поскольку никто еще не ответил, я просмотрел код, чтобы увидеть, как удалить код, который появляется в этом диалоговом окне. Я нашел
hint_gc
процедуру, которая это делает, и место, где она вызывается. В то же время я заметил, что в конце 2011 года в настройках была добавлена опция отключения диалога . Это изменение (часть мерзавца-гуй 0.16.0) было объединено с магистралью Git на 2011-12-14 .Поэтому, если вы используете Git v1.7.9 или новее, вы можете отключить диалоговое окно с предупреждением с помощью следующей команды:
Если вы используете старую версию, вы можете отредактировать
/lib/git-core/git-gui
и удалитьafter 1000 hint_gc
строку или отредактировать/usr/share/git-gui/lib/database.tcl
и удалить телоhint_gc
процедуры. (Эти пути к файлам находятся в Cygwin - в других средах файлы могут находиться в других местах. Для Windows это такc:\Program Files\Git\mingw64\libexec\git-core\git-gui.tcl
)источник
after 1000 hint_gc
чтобы предупреждение появлялось после10000
незакрепленных предметов?after 1000
относится к количеству миллисекунд ожидания, пока не отобразится диалоговое окно. Если увеличить его до «10000», диалоговое окно все равно будет отображаться, но вместо этого потребуется 10 секунд.database.tcl
содержит определение лимита и может быть увеличен, чтобы сделать диалог менее частым.Обновление:
git prune
«решит» проблему, поскольку удалит эти незакрепленные объекты(
git gc
вызовыgit prune
, но только для незакрепленных объектов старше двух недель по умолчанию).Однако, как отмечает ОП Майкл Донохью в комментариях:
Оригинальный ответ:
О проблеме
git gc
"не удаления всех незакрепленных объектов" сообщалось и раньше (в конце 2008 г. " "git gc
"" больше не удаляет незакрепленные объекты "Так что в вашем случае было
git prune
бы полезно ""?(возможно, с использованием «сейчас» в
gc.pruneexpire
переменной конфигурации, необходимого для выполнения вышеуказанного поведения).У вас также есть (из той же ветки):
источник
Когда появляется всплывающее окно «Свободный объект», я понимаю, что пора запустить сборщик мусора git:
После этого всплывающее окно исчезнет.
Обновление: (по предложению TED)
я извлек приведенную ниже процедуру из раздела
git/share/git-gui/lib/database.tcl
Вы можете изменить ее в соответствии с вашими потребностями.
источник
git gc
из командной строки решил проблему ... просто щелчокok
в git gui почему-то не помог ...Хмммм .... Я не вижу аргументов командной строки для этого в документации .
Я полагаю, вы всегда можете загрузить его исходный код, вынуть код диалога и перестроить.
источник