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

НАЗВА

git-pack-refs — Пакування заголовків та тегів для ефективного доступу до репозиторію

СИНОПСИС

git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

ОПИС

Зазвичай вершини гілок та теги (які разом називаються «посиланнями» або refs) зберігалися по одному файлу на посилання у (суб)теці, розташованій у теці $GIT_DIR/refs. Хоча вершини багатьох гілок зазвичай оновлюються часто, більшість тегів та деякі вершини гілок ніколи не оновлюються. Коли репозиторій містить сотні або тисячі тегів, такий формат «один файл на посилання» не тільки марнує місце на диску, а й погіршує продуктивність.

Ця команда використовується для вирішення проблеми зберігання та продуктивності шляхом зберігання посилань в одному файлі $GIT_DIR/packed-refs. Коли посилання відсутнє в традиційній ієрархії тек $GIT_DIR/refs, воно шукається в цьому файлі та використовується, якщо знайдено.

Подальші оновлення гілок завжди створюють нові файли в ієрархії тек $GIT_DIR/refs.

Рекомендована практика для роботи з репозиторієм із занадто великою кількістю посилань полягає в тому, щоб один раз упакувати його посилання за допомогою --all та періодично запускати git pack-refs. Теги за визначенням є незмінними, і їх зміна не передбачається. Вершини гілок будуть упаковані з початковим pack-refs --all, але розпакуються лише поточні активні вершини гілок, а наступні pack-refs (без --all) залишать їх розпакованими.

ОПЦІЇ

--all

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

--no-prune

Зазвичай команда видаляє неузгоджені посилання в ієрархії $GIT_DIR/refs після їх пакування. Цей параметр забороняє це робити.

--auto

Пакуйє посилання за потреби, залежно від поточного стану бази даних посилань. Поведінка залежить від формату посилань, який використовує репозиторій, і може змінитися в майбутньому.

  • "files": Вільні посилання упаковуються у файл packed-refs на основі співвідношення вільних посилань до розміру файлу packed-refs. Чим більший файл packed-refs, тим більше вільних посилань має існувати перед повторним упакуванням.

  • "reftable": Таблиці стискаються таким чином, що вони утворюють геометричну послідовність. Для двох таблиць N та N+1, де N+1 новіша, це зберігає властивість, що N принаймні вдвічі більша за N+1. Стискаються лише таблиці, які порушують цю властивість.

--include <pattern>

Пакувати посилання на основі шаблону glob(7). Повторення цієї опції накопичують шаблони включення. Якщо посилання включено одночасно в --include та --exclude, --exclude має пріоритет. Використання --include виключає включення всіх тегів. Символічні посилання та пошкоджені посилання ніколи не будуть упаковані. При використанні з --all це буде помилка. Використовуйте --no-include для очищення та скидання списку шаблонів.

--exclude <pattern>

Не пакувати посилання, що відповідають заданому шаблону glob(7). Повторення цієї опції накопичують шаблони виключень. Використовуйте --no-exclude для очищення та скидання списку шаблонів. Якщо посилання вже упаковане, додавання його за допомогою --exclude не призведе до його розпакування.

При використанні з --all, упаковувати лише вільні посилання, які не відповідають жодному з наданих шаблонів --exclude.

При використанні з --include, посилання, надані --include, мінус посилання, надані --exclude, будуть упаковані.

ПОМИЛКИ

Старіша документація, написана до введення механізму packed-refs, може все ще містити повідомлення на кшталт «.git/refs/heads/<назва-гілки> файл існує», коли це означає «гілка <назва-гілки> існує».

GIT

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