українська мова ▾ Topics ▾ Latest version ▾ git-index-pack last updated in 2.52.0

НАЗВА

git-index-pack — Створення файлу індексу пакунка для наявного упакованого архіву

СИНОПСИС

git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
		  [--[no-]rev-index] [<pack-file>]

ОПИС

Зчитує упакований архів (.pack) із зазначеного файлу, створює для нього файл індексу пакунка (.idx) та, за бажанням, записує зворотний індекс (.rev) для зазначеного пакунка. Упакований архів разом з індексом пакунка потім можна розмістити в теці objects/pack/ репозиторію Git.

ОПЦІЇ

-v

Докладний вивід щодо того, що відбувається, включаючи статус виконання.

-o <index-file>

Записати згенерований індекс пакунка у вказаний файл. Без цієї опції назва файлу індексу пакунка будується з назви файлу упакованого архіву шляхом заміни .pack на .idx (і програма завершує роботу, якщо назва упакованого архіву не закінчується на .pack).

--rev-index
--no-rev-index

Якщо вказано цей прапорець, створити зворотний індекс (файл .rev), що відповідає вказаному пакунку. Якщо вказано --verify, перевірити правильність наявного зворотного індексу. Має пріоритет над pack.writeReverseIndex.

--stdin

Коли цей прапорець встановлено, пакунок зчитується зі stdin, а потім копія записується в <pack-file>. Якщо <pack-file> не вказано, пакунок записується в теку objects/pack/ поточного репозиторію Git з ім’ям, яке визначається з вмісту пакунка. Якщо <pack-file> не вказано, спробуйте скористатися --keep, щоб запобігти конфлікту між цим процесом та git repack.

--fix-thin

Виправити «тонкий» пакунок, створений командою git pack-objects --thin (детальніше див. git-pack-objects[1]), додавши до пакунка об’єкти, що були виключені, на основі яких створено об’єкти-дельти. Ця опція має сенс лише у поєднанні з опцією --stdin.

--keep

Перш ніж перемістити індекс у остаточне місце призначення, потрібно створити порожній файл .keep для відповідного файлу pack. Ця опція зазвичай потрібна при використанні параметра --stdin, щоб запобігти видаленню щойно створеного файлу pack та індексу одночасним процесом git repack до того, як посилання будуть оновлені для використання об’єктів, що містяться у файлі pack.

--keep=<msg>

Як і у випадку з опцією --keep, перед переміщенням індексу в остаточне місце призначення необхідно створити файл .keep. Однак замість того, щоб створювати порожній файл, потрібно вставити в файл .keep рядок <msg>, за яким слідує символ LF. Пізніше цей рядок <msg> можна буде шукати у всіх файлах .keep, щоб виявити ті, які вже втратили свою актуальність.

--index-version=<version>[,<offset>]

Ця опція призначена виключно для використання в наборі тестів. Вона дозволяє примусово встановити версію для індексу згенерованого пакунка, а також примусово створити 64-бітні записи індексу для об’єктів, розташованих вище вказаного зміщення.

--strict[=<msg-id>=<severity>…​]

Зупинити роботу, якщо пакунок містить пошкоджені об’єкти або посилання. Для зміни рівня критичності деяких можливих проблем можна передати необов’язковий список у форматі <msg-id>=<severity>, розділений комами, наприклад: --strict=«missingEmail=ignore,badTagName=error». Дивіться запис про параметри конфігурації fsck.<msg-id> у git-fsck[1] для отримання додаткової інформації про можливі значення <msg-id> та <severity>.

--progress-title

Тільки для внутрішнього використання.

Встановлює заголовок індикатора виконання. Зазвичай заголовок «Receiving objects», а якщо вказано --stdin, то «Indexing objects».

--check-self-contained-and-connected

Припинити роботу, якщо пакунок містить непрацюючі посилання. Тільки для внутрішнього використання.

--fsck-objects[=<msg-id>=<severity>…​]

Припиняти роботу, якщо пакунок містить пошкоджені обʼєкти, але на відміну від --strict, не затримуватись на пошкоджених посиланнях. Якщо пакунок містить дерево, що вказує на блоб .gitmodules, якого не існує, виводить хеш цього блобу (для перевірки функцією виклику) після хешу, який входить до назви файлу pack/idx (див. "Примітки").

Для зміни ступеня критичності деяких можливих проблем можна передати необовʼязковий список <msg-id>=<severity>, розділений комами, наприклад, --fsck-objects="missingEmail=ignore,badTagName=ignore". Див. запис про параметри конфігурації fsck.<msg-id> у git-fsck[1] для отримання додаткової інформації про можливі значення <msg-id> та <severity>.

--threads=<n>

Визначає кількість потоків, які потрібно створити під час розвʼязання дельт. Вимагає, щоб index-pack був скомпільований з pthreads, інакше цей параметр ігнорується з попередженням. Це призначено для скорочення часу пакування на багатопроцесорних машинах. Однак необхідний обсяг памʼяті для вікна пошуку дельт множиться на кількість потоків. Якщо вказати 0, Git автоматично визначатиме кількість процесорів і використовуватиме максимум 3 потоки.

--max-input-size=<size>

Припиняти роботу, якщо пакунок більший за <розмір>.

--object-format=<hash-algorithm>

Визначає формат обʼєкта (алгоритм хешування) для пакунка. Допустимі значення: sha1 та (якщо увімкнено) sha256. Зазвичай використовується алгоритм для поточного репозиторію (визначений параметром extensions.objectFormat) або sha1, якщо значення не вказано або якщо операція виконується поза межами репозиторію.

Цей параметр не можна використовувати з --stdin.

Примітка: Наразі немає зворотної сумісності між репозиторіями SHA-256 та репозиторіями SHA-1.

Зазвичай, ми попереджали, що репозиторії SHA-256 можуть пізніше потребувати змін, що впливають на зворотню сумісність, коли ми впроваджуватимемо такі функції сумісності. Сьогодні ми очікуємо лише сумісних змін. Крім того, якщо такі зміни виявляться необхідними, можна очікувати, що репозиторії SHA-256, створені за допомогою сучасного Git, можна буде використовувати в майбутніх версіях Git без втрати даних.

--promisor[=<message>]

Перед фіксацією pack-index створіть файл .promisor для цього пакунка. Це особливо корисно під час написання promisor-пакунка з --fix-thin, оскільки назва пакунка не є остаточною, доки його не буде повністю записано. Якщо надано <message>, то цей вміст буде записано до файлу .promisor для подальшого використання. Див. посилання: partial clone для отримання додаткової інформації.

Крім того, якщо у заданому пакунку є обʼєкти, які посилаються на обʼєкти, що не є промісорами (у репозиторії), ці об’єкти, що не є промісорами, перепаковуються у пакунок промісорів. Це дозволяє уникнути ситуації, коли у репозиторії містяться об’єкти, що не є промісорами, доступ до яких здійснюється через об’єкти-промісори.

Вимагає, щоб <pack-file> не було вказано.

ПРИМІТКИ

Після створення індексу хеш, який входить до назви файлу pack/idx, виводиться в stdout. Якщо також використовувався --stdin, то перед ним ставиться префікс "pack\t" або "keep\t", якщо новий файл .keep було успішно створено. Це корисно для видалення файлу .keep, який використовується як блокування, щоб запобігти конкуренції з git repack, згаданим вище.

GIT

Частина набору git[1]