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

НАЗВА

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

СИНОПСИС

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

ОПИС

Традиційно, підказки гілок та тегів (разом відомі як «посилання») зберігалися в одному файлі на кожне посилання в (під)каталозі в каталозі $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 <візерунок>

Пакувати посилання на основі шаблону 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]