Spec-Zone.ru › Git

git-commit-graph

Название

git-commit-graph — запись и проверка файлов графа коммитов Git

Краткое описание

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
                        [--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
                        [--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
                        <split-options>

Описание

Управление сериализованным файлом графа коммитов.

Параметры

--object-dir

Использовать указанный каталог для размещения файлов пакетов и файла графа коммитов. Этот параметр позволяет указать расположение альтернативного хранилища, в котором есть только каталог объектов, а не полный каталог .git. Ожидается, что файл графа коммитов находится в каталоге <dir>/info, а файлы пакетов — в каталоге <dir>/pack. Если каталог не удалось преобразовать в абсолютный путь или он не соответствует ни одному известному каталогу объектов, git commit-graph ... завершится с ненулевым кодом.

--progress
--no-progress

Явно включить или отключить отображение хода выполнения. Если не указан ни один из параметров, ход выполнения отображается, если стандартный поток ошибок подключён к терминалу.

Команды

write

Записать файл графа коммитов на основе коммитов, найденных в файлах пакетов. Если параметр конфигурации core.commitGraph отключён, эта команда выведет предупреждение и завершится успешно, не записав файл графа коммитов.

С параметром --stdin-packs создать новый граф коммитов, обходя объекты только в указанных индексах пакетов. (Нельзя использовать вместе с --stdin-commits или --reachable.)

С параметром --stdin-commits создать новый граф коммитов, начиная обход коммитов с указанных в stdin коммитов, представленных списком OID в шестнадцатеричном формате, по одному OID в строке. OID, разрешающиеся в объекты, не являющиеся коммитами (непосредственно или после снятия тегов), игнорируются без уведомления. Некорректно сформированные или несуществующие OID приводят к ошибке. (Нельзя использовать вместе с --stdin-packs или --reachable.)

С параметром --reachable создать новый граф коммитов, начиная обход коммитов со всех ссылок. (Нельзя использовать вместе с --stdin-commits или --stdin-packs.)

С параметром --append включить все коммиты, присутствующие в существующем файле графа коммитов.

С параметром --changed-paths вычислить и записать сведения о путях, изменённых между коммитом и его первым родителем. Эта операция может занять некоторое время в больших репозиториях. Она значительно ускоряет получение истории каталога или файла с помощью git log -- <path>. Если этот параметр указан, при последующих записях графа коммитов будет автоматически предполагаться, что он также нужен. Используйте --no-changed-paths, чтобы прекратить хранение этих данных. Параметр --changed-paths подразумевается при настройке commitGraph.changedPaths=true.

С параметром --max-new-filters=<n> создать не более n новых фильтров Блума (если указан параметр --changed-paths). Если значение n равно -1, ограничение не применяется. В это ограничение входят только коммиты, присутствующие в новом слое. Чтобы ретроспективно вычислить фильтры Блума для предыдущих слоёв, рекомендуется использовать --split=replace. Переопределяет настройку commitGraph.maxNewFilters.

С параметром --split[=<strategy>] записать граф коммитов в виде цепочки из нескольких файлов графа коммитов, хранящихся в каталоге <dir>/info/commit-graphs. Слои графа коммитов объединяются в соответствии со стратегией и другими параметрами разделения. Новые коммиты, ещё не включённые в граф коммитов, добавляются в новый файл «вершины». Этот файл объединяется с существующим файлом, если выполняются следующие условия слияния:

  • Если указан параметр --split=no-merge, слияние не выполняется, а остальные параметры игнорируются. --split=replace заменяет существующую цепочку новой. Если указан только --split, учитываются остальные параметры. (Обратите внимание: слияние цепочки графов коммитов заменяет существующую цепочку цепочкой длины 1, в которой первый и единственный инкрементальный файл содержит весь граф.)

  • Если параметр --size-multiple=<X> не указан, считать, что X равно 2. Если в новом файле вершины будет N коммитов, в предыдущем файле вершины — M коммитов, а X, умноженное на N, больше M, вместо этого объединить оба файла в один.

  • Если параметр --max-commits=<M> указан со значением M, являющимся положительным целым числом, и в новом файле вершины будет более M коммитов, вместо этого объединить новую вершину с предыдущей.

    Наконец, если параметр --expire-time=<datetime> не указан, считать, что datetime — это текущее время. После записи разделённого графа коммитов удалить все неиспользуемые файлы графа коммитов, время изменения которых раньше datetime.

verify

Прочитать файл графа коммитов и проверить его содержимое по базе объектов. Используется для проверки на наличие повреждённых данных.

С параметром --shallow проверять только вершину цепочки разделённых графов коммитов.

Примеры

  • Записать файл графа коммитов для упакованных коммитов в локальном каталоге .git.

    $ git commit-graph write
  • Записать файл графа коммитов, дополнив текущий файл графа коммитами из <pack-index>.

    $ echo <pack-index> | git commit-graph write --stdin-packs
  • Записать файл графа коммитов, содержащий все достижимые коммиты.

    $ git show-ref -s | git commit-graph write --stdin-commits
  • Записать файл графа коммитов, содержащий все коммиты из текущего файла графа коммитов, а также коммиты, достижимые из HEAD.

    $ git rev-parse HEAD | git commit-graph write --stdin-commits --append

Предостережения

Наличие объектов-заменителей или подстановок коммитов отключает чтение и запись графа коммитов. См. git-replace[1].

Настройка

Всё содержимое этого раздела ниже данной строки выборочно включено из документации git-config[1]. Оно совпадает с содержимым соответствующего раздела:

commitGraph.generationVersion

Задаёт версию номера генерации, используемую при записи или чтении файла графа коммитов. Если указана версия 1, исправленные даты коммитов не будут записываться или считываться. По умолчанию используется версия 2.

commitGraph.maxNewFilters

Задаёт значение по умолчанию для параметра --max-new-filters команды git commit-graph write (см. git-commit-graph[1]).

commitGraph.changedPaths

Если значение равно true, команда git commit-graph write по умолчанию вычисляет и записывает фильтры Блума для изменённых путей, что эквивалентно передаче параметра --changed-paths. Если значение равно false или не задано, фильтры Блума для изменённых путей записываются во время выполнения команды git commit-graph write только в том случае, если эти фильтры уже есть в текущем файле графа коммитов. Это соответствует поведению команды git commit-graph write по умолчанию, без параметра --[no-]changed-paths. Чтобы перезаписать файл графа коммитов без фильтров, используйте параметр --no-changed-paths. Параметр командной строки --[no-]changed-paths всегда имеет приоритет над этой настройкой. По умолчанию не задано.

commitGraph.readChangedPaths

Устарел. Эквивалентен commitGraph.changedPathsVersion=-1, если значение равно true, и commitGraph.changedPathsVersion=0, если значение равно false. (Если также задан параметр commitGraph.changedPathVersion, приоритет имеет commitGraph.changedPathsVersion.)

commitGraph.changedPathsVersion

Задаёт версию фильтров Блума для изменённых путей, которые Git будет считывать и записывать. Может принимать значения -1, 0, 1 или 2. Обратите внимание: значения больше 1 могут быть несовместимы со старыми версиями Git, которые ещё не поддерживают эти версии. Будьте осторожны при работе в среде с разными версиями.

По умолчанию — -1.

Если задано значение -1, Git будет использовать версию фильтров Блума для изменённых путей, имеющуюся в репозитории; если таких фильтров нет, будет использоваться версия 1.

Если задано значение 0, Git не будет считывать фильтры Блума и будет записывать фильтры Блума версии 1, когда ему будет указано выполнить запись.

Если задано значение 1, Git будет считывать только фильтры Блума версии 1 и записывать фильтры Блума версии 1.

Если задано значение 2, Git будет считывать только фильтры Блума версии 2 и записывать фильтры Блума версии 2.

Дополнительные сведения см. в git-commit-graph[1].

Формат файла

см. gitformat-commit-graph[5].

commit-graph

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-commit-graph

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API