git-maintenance
Имя
git-maintenance — выполнение задач для оптимизации данных репозитория Git
Краткое описание
git maintenance run [<options>] git maintenance start [--scheduler=<scheduler>] git maintenance (stop|register|unregister) [<options>] git maintenance is-needed [<options>]
Описание
Выполняет задачи для оптимизации данных репозитория Git, ускоряя выполнение других команд Git и сокращая требования к хранилищу репозитория.
Команды Git, добавляющие данные в репозиторий, такие как git add или git fetch, оптимизированы для отзывчивой работы с пользователем. Эти команды не тратят время на оптимизацию данных Git, поскольку такие оптимизации масштабируются в зависимости от полного размера репозитория, а каждая из этих пользовательских команд выполняет сравнительно небольшое действие.
Команда git maintenance позволяет гибко выбирать способ оптимизации репозитория Git.
Подкоманды
- run
-
Выполняет одну или несколько задач обслуживания. Если указаны один или несколько параметров
--task, задачи выполняются в указанном порядке. В противном случае задачи определяются тем, какие параметры конфигурацииmaintenance.<task>.enabledимеют значение true. По умолчанию значение true имеет толькоmaintenance.gc.enabled. - start
-
Запускает обслуживание текущего репозитория. Выполняет те же изменения конфигурации, что и подкоманда
register, а затем обновляет фоновый планировщик, чтобы он запускалgitmaintenancerun--scheduledкаждый час. - stop
-
Останавливает расписание фонового обслуживания. Текущий репозиторий не удаляется из списка обслуживаемых репозиториев на случай, если фоновое обслуживание будет запущено повторно позднее.
- register
-
Инициализирует значения конфигурации Git, чтобы запланированное обслуживание запускалось для этого репозитория. Добавляет репозиторий в переменную конфигурации
maintenance.repoв глобальной конфигурации текущего пользователя или в конфигурацию, указанную параметром --config-file, и включает некоторые рекомендуемые значения конфигурации дляmaintenance.<task>.schedule. Включённые задачи безопасно выполнять в фоновом режиме, не мешая процессам, выполняющимся в переднем плане.Подкоманда
registerтакже задаёт для значения конфигурацииmaintenance.strategyзначениеincremental, если оно ещё не задано. Стратегияincrementalиспользует следующее расписание для каждой задачи обслуживания:-
gc: отключено. -
commit-graph: каждый час. -
prefetch: каждый час. -
loose-objects: ежедневно. -
incremental-repack: ежедневно.
gitmaintenanceregisterтакже отключает обслуживание в переднем плане, задавая в текущем репозиторииmaintenance.auto=false. Этот параметр конфигурации сохранится и после выполнения командыgitmaintenanceunregister. -
- unregister
-
Удаляет текущий репозиторий из списка фонового обслуживания. Репозиторий удаляется только из списка, заданного в конфигурации. Фоновые процессы обслуживания не останавливаются.
Подкоманда
unregisterсообщит об ошибке, если текущий репозиторий ещё не зарегистрирован. Используйте параметр--force, чтобы команда завершилась успешно, даже если текущий репозиторий не зарегистрирован. - is-needed
-
Проверяет, требуется ли запуск обслуживания, не запуская его. Завершает работу с кодом состояния 0, если обслуживание необходимо запустить, и с кодом 1 в противном случае. Рекомендуется использовать с флагом
--auto.Если указаны один или несколько параметров
--task, задачи проверяются в указанном порядке. В противном случае задачи определяются тем, какие параметры конфигурацииmaintenance.<task>.enabledимеют значение true. По умолчанию значение true имеет толькоmaintenance.gc.enabled.
Задачи
- commit-graph
-
Задача
commit-graphинкрементально обновляет файлыcommit-graph, а затем проверяет корректность записанных данных. Инкрементальная запись безопасна при одновременной работе других процессов Git, поскольку она не удаляет файлы.graph, находившиеся в предыдущем файлеcommit-graph-chain. Они будут удалены при последующем запуске с учётом периода хранения. - prefetch
-
Задача
prefetchобновляет каталог объектов, загружая последние объекты со всех зарегистрированных удалённых репозиториев. Для каждого удалённого репозитория выполняется командаgitfetch. Настроенный refspec изменяется так, чтобы все запрошенные ссылки помещались вrefs/prefetch/. Кроме того, теги не обновляются.Это делается для того, чтобы не нарушать работу веток отслеживания удалённых репозиториев. Пользователи ожидают, что эти ссылки не будут перемещаться, пока они сами не инициируют получение данных. Однако задача предварительной загрузки заранее получает объекты, необходимые для последующего обычного получения данных, благодаря чему оно выполняется быстрее. В идеальном случае потребуется лишь обновить несколько веток отслеживания удалённых репозиториев без передачи объектов.
С помощью конфигурации
remote.<name>.skipFetchAllможно исключить предварительную загрузку для определённого удалённого репозитория. - gc
-
Очищает ненужные файлы и оптимизирует локальный репозиторий. «GC» означает «сборка мусора», но эта задача выполняет множество более мелких операций. Для больших репозиториев эта задача может быть ресурсоёмкой, поскольку она перепаковывает все объекты Git в один файл пакета. В некоторых ситуациях она также может мешать работе, так как удаляет устаревшие данные. Подробнее о сборке мусора в Git см. в git-gc[1].
- loose-objects
-
Задача
loose-objectsочищает свободные объекты и помещает их в файлы пакетов. Во избежание состояний гонки с параллельно выполняющимися командами Git используется двухэтапный процесс. Сначала удаляются все свободные объекты, уже имеющиеся в файле пакета; параллельные процессы Git будут искать данные объектов в файле пакета, а не среди свободных объектов. Затем создаётся новый файл пакета (с префиксом «loose-»), содержащий набор свободных объектов.Размер набора по умолчанию составляет пятьдесят тысяч объектов, чтобы задача не выполнялась слишком долго в репозиториях с большим количеством свободных объектов. Используйте параметр конфигурации
maintenance.loose-objects.batchSize, чтобы изменить это значение; значение0снимает ограничение.Задача
gcзаписывает недостижимые объекты как свободные, чтобы их можно было очистить на следующем этапе, если они не будут повторно добавлены в файл пакета. Поэтому не рекомендуется одновременно включать задачиloose-objectsиgc. - incremental-repack
-
Задача
incremental-repackперепаковывает каталог объектов с использованием возможностиmulti-pack-index. Во избежание состояний гонки с параллельно выполняющимися командами Git используется двухэтапный процесс. Сначала вызываетсяgitmulti-pack-indexexpire, чтобы удалить файлы пакетов, на которые не ссылается файлmulti-pack-index. Затем вызываетсяgitmulti-pack-indexrepack, чтобы выбрать несколько небольших файлов пакетов и перепаковать их в один более крупный файл, а затем обновить записиmulti-pack-index, ссылающиеся на небольшие файлы пакетов, чтобы они ссылались на новый файл пакета. Благодаря этому небольшие файлы пакетов будут удалены при следующем запускеgitmulti-pack-indexexpire. Небольшие файлы пакетов выбираются так, чтобы ожидаемый размер большого файла пакета был не меньше размера набора; см. параметр--batch-sizeподкомандыrepackв git-multi-pack-index[1]. Размер набора по умолчанию равен нулю; это особый случай, при котором предпринимается попытка перепаковать все файлы пакетов в один файл. - pack-refs
-
Задача
pack-refsсобирает отдельные файлы ссылок в один файл. Это ускоряет операции, которым требуется перебрать множество ссылок. Дополнительные сведения см. в git-pack-refs[1]. - reflog-expire
-
Задача
reflog-expireудаляет из журнала ссылок все записи, срок хранения которых истёк. Дополнительные сведения см. в git-reflog[1]. - rerere-gc
-
Задача
rerere-gcвыполняет сборку мусора для устаревших записей в кэше rerere. Дополнительные сведения см. в git-rerere[1]. - worktree-prune
-
Задача
worktree-pruneудаляет устаревшие или повреждённые рабочие деревья. Дополнительные сведения см. в git-worktree[1].
Параметры
- --auto
-
При использовании вместе с подкомандой
runзапускает задачи обслуживания только при достижении определённых пороговых значений. Например, задачаgcзапускается, когда число свободных объектов превышает число, указанное в параметре конфигурацииgc.auto, или когда число файлов пакетов превышает значение параметра конфигурацииgc.autoPackLimit. Несовместим с параметром--schedule. При использовании вместе с подкомандойis-neededпроверяет, достигнуты ли требуемые пороговые значения, не запуская обслуживание. - --schedule
-
При использовании вместе с подкомандой
runзапускает задачи обслуживания только при выполнении определённых временных условий, заданных значением конфигурацииmaintenance.<task>.scheduleдля каждой задачи <task>. Это значение конфигурации задаёт количество секунд, прошедших с момента последнего запуска задачи, согласно значению конфигурацииmaintenance.<task>.lastRun. Проверяются задачи, указанные в параметрах--task=<task>, либо задачи, для которых параметрmaintenance.<task>.enabledимеет значение true. - --quiet
-
Не выводит ход выполнения и другие сведения в
stderr. - --task=<task>
-
Если этот параметр указан один или несколько раз, выполняются только заданные задачи в указанном порядке. Если аргументы
--task=<task> не указаны, рассматриваются только задачи, для которых параметр конфигурацииmaintenance.<task>.enabledимеет значениеtrue. Список допустимых значений <task> см. в разделеTASKS. - --scheduler=auto|crontab|systemd-timer|launchctl|schtasks
-
При использовании вместе с подкомандой
startзадаёт планировщик для ежечасного, ежедневного и еженедельного запускаgitmaintenancerun. Допустимые значения <scheduler>:auto,crontab(POSIX),systemd-timer(Linux),launchctl(macOS) иschtasks(Windows). Если указано значениеauto, используется подходящий для платформы планировщик; в Linux используетсяsystemd-timer, если он доступен, иначе —crontab. Значение по умолчанию —auto.
Устранение неполадок
Команда git maintenance упрощает обслуживание репозитория и сокращает время ожидания пользователя при выполнении команд Git. Доступны различные параметры конфигурации, позволяющие настроить этот процесс. Параметры обслуживания по умолчанию ориентированы на операции, которые выполняются быстро даже в больших репозиториях.
В некоторых случаях запланированные задачи обслуживания могут выполняться не так часто, как ожидалось. Каждая команда git maintenance run блокирует базу данных объектов репозитория, не позволяя выполнять другие параллельные команды git maintenance run в том же репозитории. Без этой защиты конкурирующие процессы могут привести репозиторий в непредсказуемое состояние.
Фоновое обслуживание запускает процессы git maintenance run каждый час. При каждом запуске выполняются задачи «ежечасного» обслуживания. В полночь этот процесс также выполняет «ежедневные» задачи. В полночь первого дня недели он также выполняет «еженедельные» задачи. Один процесс проходит по каждому зарегистрированному репозиторию и выполняет запланированные задачи соответствующей периодичности. Для каждого клиента время запуска в пределах часа выбирается случайным образом, чтобы распределить нагрузку, создаваемую несколькими клиентами (например, при предварительной загрузке). В зависимости от количества зарегистрированных репозиториев и их размеров выполнение этого процесса может занять больше часа. В этом случае в одном репозитории могут одновременно выполняться несколько команд git maintenance run, конкурирующих за блокировку базы данных объектов. В результате одна из двух задач не будет выполнена.
Если некоторые интервалы обслуживания занимают больше часа, попробуйте уменьшить сложность задач обслуживания. Например, задача gc выполняется гораздо медленнее задачи incremental-repack. Однако это приводит к небольшому увеличению размера базы данных объектов. Рассмотрите возможность переноса более ресурсоёмких задач на менее частый запуск.
Опытные пользователи могут запланировать собственные задачи обслуживания с расписанием, отличным от доступного через git maintenance start и параметры конфигурации Git. Такие пользователи должны учитывать блокировку базы данных объектов и то, как ведут себя параллельные команды git maintenance run. Кроме того, команду git gc не следует использовать одновременно с командами git maintenance run. Команда git gc изменяет базу данных объектов, но не блокирует её так же, как команда git maintenance run. Если возможно, вместо git gc используйте git maintenance run --task=gc.
В следующих разделах описаны механизмы фонового обслуживания, реализованные в git maintenance start, и способы их настройки.
Фоновое обслуживание в системах POSIX
Стандартный механизм планирования фоновых задач в системах POSIX — cron(8). Этот инструмент выполняет команды по заданному расписанию. Текущий список задач пользователя, запланированных таким образом, можно посмотреть, выполнив команду crontab -l. Расписание, созданное командой git maintenance start, выглядит примерно так:
# BEGIN GIT MAINTENANCE SCHEDULE # The following schedule was created by Git # Any edits made in this region might be # replaced in the future by a Git command. 0 1-23 * * * "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=hourly 0 0 * * 1-6 "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=daily 0 0 * * 0 "/<path>/git" --exec-path="/<path>" for-each-repo --config=maintenance.repo maintenance run --schedule=weekly # END GIT MAINTENANCE SCHEDULE
Комментарии обозначают область расписания, созданную Git. Любые изменения в этой области будут полностью удалены командой git maintenance stop или перезаписаны командой git maintenance start.
Запись crontab задаёт полный путь к исполняемому файлу git, чтобы выполняемая команда git совпадала с той, с помощью которой была вызвана команда git maintenance start, независимо от PATH. Если один и тот же пользователь запускает git maintenance start с несколькими исполняемыми файлами Git, будет использоваться только последний из них.
Эти команды используют git for-each-repo --config=maintenance.repo для запуска git maintenance run --schedule=<frequency> для каждого репозитория, перечисленного в многозначном параметре конфигурации maintenance.repo. Обычно эти значения загружаются из глобальной конфигурации пользователя. Затем процесс git maintenance определяет, какие задачи обслуживания настроены для запуска в каждом репозитории с заданной периодичностью <frequency>, используя параметры конфигурации maintenance.<task>.schedule. Эти значения загружаются из глобальной конфигурации или конфигурации репозитория.
Если значений конфигурации недостаточно для желаемого расписания фонового обслуживания, можно создать собственное расписание. При запуске команды crontab -e в редакторе откроется пользовательское расписание cron. В редакторе можно добавить собственные строки расписания. Можно взять за основу приведённое выше расписание по умолчанию или обратиться к документации crontab(5), где описаны более сложные способы планирования. Используйте полный путь и приёмы --exec-path из расписания по умолчанию, чтобы убедиться, что запускаются правильные исполняемые файлы.
Фоновое обслуживание в системах Linux с systemd
Хотя Linux поддерживает cron, в зависимости от дистрибутива cron может быть необязательным пакетом, который не обязательно установлен. В современных дистрибутивах Linux его заменяют таймеры systemd.
Если доступны пользовательские таймеры systemd, они будут использоваться вместо cron.
В этом случае git maintenance start создаст пользовательские модули таймеров systemd и запустит таймеры. Текущий список задач пользователя, запланированных таким образом, можно посмотреть, выполнив команду systemctl --user list-timers. Таймеры, созданные командой git maintenance start, выглядят примерно так:
$ systemctl --user list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Thu 2021-04-29 19:00:00 CEST 42min left Thu 2021-04-29 18:00:11 CEST 17min ago git-maintenance@hourly.timer git-maintenance@hourly.service Fri 2021-04-30 00:00:00 CEST 5h 42min left Thu 2021-04-29 00:00:11 CEST 18h ago git-maintenance@daily.timer git-maintenance@daily.service Mon 2021-05-03 00:00:00 CEST 3 days left Mon 2021-04-26 00:00:11 CEST 3 days ago git-maintenance@weekly.timer git-maintenance@weekly.service
Для каждого параметра --schedule=<frequency> регистрируется один таймер.
Определения модулей systemd можно посмотреть в следующих файлах:
~/.config/systemd/user/git-maintenance@.timer ~/.config/systemd/user/git-maintenance@.service ~/.config/systemd/user/timers.target.wants/git-maintenance@hourly.timer ~/.config/systemd/user/timers.target.wants/git-maintenance@daily.timer ~/.config/systemd/user/timers.target.wants/git-maintenance@weekly.timer
Команда git maintenance start перезапишет эти файлы и повторно запустит таймер с помощью systemctl --user, поэтому для настройки следует создать файл переопределения, то есть файл с суффиксом .conf в каталоге ~/.config/systemd/user/git-maintenance@.service.d.
Команда git maintenance stop остановит пользовательские таймеры systemd и удалит перечисленные выше файлы.
Дополнительные сведения см. в systemd.timer(5).
Фоновое обслуживание в системах macOS
Хотя macOS технически поддерживает cron, для использования crontab -e требуются повышенные привилегии, а запущенный процесс не получает полного пользовательского контекста. Без полного пользовательского контекста Git и его помощники учётных данных не могут получить доступ к сохранённым учётным данным, поэтому некоторые задачи обслуживания не работают.
Вместо этого команда git maintenance start взаимодействует с инструментом launchctl, рекомендованным способом планирования задач по времени в macOS. Для планирования обслуживания через git maintenance (start|stop) требуются некоторые возможности launchctl, доступные только в macOS 10.11 и более поздних версиях.
Запланированные задачи пользователя хранятся в XML-файлах .plist в каталоге ~/Library/LaunchAgents/. Текущие зарегистрированные задачи можно просмотреть с помощью следующей команды:
$ ls ~/Library/LaunchAgents/org.git-scm.git* org.git-scm.git.daily.plist org.git-scm.git.hourly.plist org.git-scm.git.weekly.plist
Для каждого параметра --schedule=<frequency> регистрируется одна задача. Чтобы узнать, как XML-формат описывает расписание, откройте один из этих файлов .plist в редакторе и изучите элемент <array> после элемента <key>StartCalendarInterval</key>.
Команда git maintenance start перезапишет эти файлы и повторно зарегистрирует задачи с помощью launchctl, поэтому для настройки следует создать собственные файлы .plist с уникальными именами. Аналогично, команда git maintenance stop отменит регистрацию задач с помощью launchctl и удалит файлы .plist.
Дополнительные сведения о расширенной настройке фоновых задач см. в launchctl.plist(5).
Фоновое обслуживание в системах Windows
Windows не поддерживает cron и использует собственную систему планирования фоновых задач. Команда git maintenance start использует команду schtasks для добавления задач в эту систему. Все фоновые задачи можно просмотреть в приложении «Планировщик заданий». Добавленные Git задачи называются по шаблону Git Maintenance (<frequency>). Графический интерфейс планировщика заданий позволяет просматривать эти задачи, но можно также экспортировать их в XML-файлы и изучить подробности в них.
Обратите внимание: поскольку Git — консольное приложение, эти фоновые задачи создают консольное окно, видимое текущему пользователю. Это можно изменить вручную, выбрав в планировщике заданий параметр «Выполнять независимо от того, вошёл ли пользователь в систему». Для этого изменения требуется ввести пароль, поэтому команда git maintenance start не выбирает этот параметр по умолчанию.
Если вы хотите настроить фоновые задачи, переименуйте их, чтобы последующие вызовы git maintenance (start|stop) не перезаписывали ваши пользовательские задачи.
Конфигурация
Всё содержимое ниже этой строки в данном разделе выборочно включено из документации git-config[1]. Содержимое совпадает с тем, что находится там:
- maintenance.auto
-
Этот логический параметр конфигурации определяет, будут ли некоторые команды выполнять
gitmaintenancerun--autoпосле завершения своей обычной работы. Значение по умолчанию — true. - maintenance.autoDetach
-
Многие команды Git запускают автоматическое обслуживание после записи данных в репозиторий. Этот логический параметр конфигурации определяет, будет ли это автоматическое обслуживание выполняться на переднем плане или процесс обслуживания будет отсоединён и продолжит работу в фоновом режиме.
Если значение не задано, в качестве резервного используется значение
gc.autoDetach. Если не заданы оба параметра, значение по умолчанию — true, то есть процесс обслуживания будет отсоединён. - maintenance.strategy
-
Этот строковый параметр конфигурации позволяет указать одну из нескольких рекомендуемых стратегий обслуживания репозитория. Он определяет, какие задачи выполняются во время
gitmaintenancerun, если не указаны аргументы--task=<task>. Этот параметр влияет на ручное, автоматическое и запланированное обслуживание. Набор выполняемых задач может различаться в зависимости от типа обслуживания.Стратегию обслуживания можно дополнительно настроить, задав параметры
maintenance.<task>.enabledиmaintenance.<task>.schedule. Если они заданы, эти значения используются вместо значений по умолчанию, предусмотренных параметромmaintenance.strategy.Возможны следующие стратегии:
-
none: эта стратегия означает, что задачи вообще не выполняются. Это стратегия по умолчанию для запланированного обслуживания. -
gc: эта стратегия выполняет задачуgc. -
geometric: эта стратегия выполняет геометрическую перепаковку pack-файлов и поддерживает вспомогательные структуры данных в актуальном состоянии. Стратегия удаляет устаревшие записи из reflog и рабочие деревья, которые больше невозможно найти. Если при геометрической перепаковке было бы принято решение выполнить перепаковку всех объектов в один файл, стратегия создаёт cruft-пак для всех недостижимых объектов. Объекты, уже входящие в cruft-пак, будут удалены по истечении срока хранения.Эта стратегия перепаковки полностью заменяет стратегию
gcи рекомендуется для больших репозиториев. Это стратегия по умолчанию для ручного обслуживания. -
incremental: этот параметр оптимизирует выполнение небольших задач обслуживания, не удаляющих данные. При этом задачаgcне планируется, а задачиprefetchиcommit-graphвыполняются каждый час, задачиloose-objectsиincremental-repack— ежедневно, а задачаpack-refs— еженедельно. При ручном обслуживании репозитория выполняется задачаgc.
-
- maintenance.<task>.enabled
-
Этот логический параметр конфигурации определяет, будет ли выполняться задача обслуживания с именем <task>, если для команды
gitmaintenancerunне указан параметр--task. Эти значения конфигурации игнорируются, если указан параметр--task. По умолчанию значение true задано только дляmaintenance.gc.enabled. - maintenance.<task>.schedule
-
Этот параметр конфигурации определяет, будет ли указанная задача <task> выполняться при вызове команды
gitmaintenancerun--schedule=<frequency>. Значение должно быть одним из следующих: "hourly", "daily" или "weekly". - maintenance.commit-graph.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
commit-graphдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаcommit-graphне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, когда число достижимых коммитов, отсутствующих в файле commit-graph, не меньше значенияmaintenance.commit-graph.auto. Значение по умолчанию — 100. - maintenance.loose-objects.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
loose-objectsдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаloose-objectsне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, когда число отдельных объектов не меньше значенияmaintenance.loose-objects.auto. Значение по умолчанию — 100. - maintenance.loose-objects.batchSize
-
Этот целочисленный параметр конфигурации определяет максимальное число отдельных объектов, записываемых в pack-файл во время выполнения задачи
loose-objects. Значение по умолчанию — пятьдесят тысяч. Укажите значение0, чтобы снять ограничение. - maintenance.incremental-repack.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
incremental-repackдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаincremental-repackне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, когда число pack-файлов, не входящих в multi-pack-index, не меньше значенияmaintenance.incremental-repack.auto. Значение по умолчанию — 10. - maintenance.geometric-repack.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
geometric-repackдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаgeometric-repackне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, если имеются pack-файлы, которые нужно объединить, чтобы сохранить геометрическую прогрессию, или если имеется не меньше такого числа отдельных объектов, которые будут записаны в новый pack-файл. Значение по умолчанию — 100. - maintenance.geometric-repack.splitFactor
-
Этот целочисленный параметр конфигурации задаёт коэффициент геометрической последовательности. Дополнительные сведения см. в описании параметра
--geometric=в git-repack[1]. Значение по умолчанию —2. - maintenance.reflog-expire.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
reflog-expireдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаreflog-expireне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, когда число устаревших записей в reflog "HEAD" не меньше значенияmaintenance.loose-objects.auto. Значение по умолчанию — 100. - maintenance.rerere-gc.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
rerere-gcдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаrerere-gcне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае любое положительное значение означает, что команда будет выполняться, если каталог "rr-cache" существует и содержит хотя бы одну запись, независимо от того, устарела она или нет. В дальнейшем этот эвристический метод может быть усовершенствован. Значение по умолчанию — 1. - maintenance.worktree-prune.auto
-
Этот целочисленный параметр конфигурации определяет, как часто задача
worktree-pruneдолжна выполняться в рамкахgitmaintenancerun--auto. Если значение равно нулю, задачаworktree-pruneне будет выполняться при использовании параметра--auto. Отрицательное значение заставляет выполнять задачу каждый раз. В противном случае положительное значение означает, что команду следует выполнять, когда число рабочих деревьев, которые можно удалить, превышает это значение. Значение по умолчанию — 1.
maintenance
© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-maintenance