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

НАЗВА

git-check-ref-format — Забезпечує правильне формування назви посилання

СИНОПСИС

git check-ref-format [--normalize]
       [--[no-]allow-onelevel] [--refspec-pattern]
       <refname>
git check-ref-format --branch <branchname-shorthand>

ОПИС

Перевіряє, чи є задане «refname» є прийнятним, і завершує роботу з ненульовим статусом, якщо це не так.

Посилання використовується в Git для позначення гілок та тегів. Вершина гілки зберігається в ієрархії refs/heads, тоді як тег зберігається в ієрархії refs/tags простору імен посилань (зазвичай у теках $GIT_DIR/refs/heads та $GIT_DIR/refs/tags або як записи у файлі $GIT_DIR/packed-refs, якщо посилання упаковані за допомогою git gc).

Git встановлює такі правила щодо іменування посилань:

  1. Вони можуть містити скісну риску / для ієрархічного (теки) групування, але жоден компонент, розділений скісною рискою, не може починатися з крапки . або закінчуватися послідовністю .lock.

  2. Вони повинні містити принаймні один символ /. Це забезпечує наявність категорії, такої як heads/, tags/ тощо, але фактичні назви не обмежені. Якщо використовується опція --allow-onelevel, це правило не діє.

  3. Вони не можуть містити дві послідовні крапки .. ніде.

  4. Вони не можуть містити керівні символи ASCII (тобто байти, значення яких менші за \040 або \177 DEL), пробіл, тильду ~, каретку ^ або двокрапку : будь-де.

  5. Вони не можуть містити знак питання ?, зірочку * або відкриту дужку [ будь-де. Дивіться опцію --refspec-pattern нижче для винятку з цього правила.

  6. Вони не можуть починатися або закінчуватися скісною рискою / або містити кілька послідовних скісних (див. опцію --normalize нижче як виняток із цього правила).

  7. Вони не можуть закінчуватися крапкою ..

  8. Вони не можуть містити послідовність @{.

  9. Вони не можуть бути одним символом @.

  10. Вони не можуть містити символ \.

Ці правила спрощують для інструментів на основі скриптів оболонки розбір імен посилань, розширення шляхів оболонкою, коли імʼя посилання використовується без лапок (помилково), а також уникають неоднозначностей у певних виразах імен посилань (див. gitrevisions[7]):

  1. Подвійна крапка .. часто використовується як у ref1..ref2, а в деяких контекстах це позначення означає ^ref1 ref2 (тобто не в ref1, а в ref2).

  2. Тильда ~ та каретка ^ використовуються для позначення постфіксних операцій n-й батьківський елемент та пошарове обчищення.

  3. Двокрапка : використовується, як у srcref:dstref, для позначення «використовувати значення srcref\ та зберігати його в dstref» в операціях fetch та push. Її також можна використовувати для вибору певного обʼєкта, наприклад, у git cat-file: "git cat-file blob v1.3.3:refs.c".

  4. at-open-brace @{ використовується як нотація для доступу до запису reflog.

З опцією --branch команда приймає імʼя та перевіряє, чи можна його використовувати як дійсне імʼя гілки (наприклад, під час створення нової гілки). Але будьте обережні при використанні синтаксису попереднього перегляду, який може посилатися на стан відокремленого HEAD. Правило, яке реалізує git check-ref-format --branch $name, може бути суворішим, ніж те, що визначає git check-ref-format refs/heads/$name (наприклад, тире може з’являтися на початку компонента посилання, але воно категорично заборонено на початку імені гілки). При запуску з опцією --branch у репозиторії вхідні дані спочатку розширюються для «синтаксису попереднього перегляду» @{-n}. Наприклад, @{-1} — це спосіб посилання на останнє, що було переглянуто за допомогою операції git switch або git checkout. Цю опцію слід використовувати в порцелянових модулях, щоб вони приймали цю синтаксичну конструкцію скрізь, де очікується імʼя гілки, і могли діяти так, ніби ви вказали імʼя гілки. Як виняток, зверніть увагу, що операція попереднього перегляду може призвести до імені обʼєкта коміту, якщо N-та за рахунком остання перевірена річ не була гілкою.

ОПЦІЇ

--allow-onelevel
--no-allow-onelevel

Визначає, чи допускаються однорівневі імена посилань (тобто імена посилань, що не містять декількох компонентів, розділених символом /). Зазвичай встановлено значення --no-allow-onelevel.

--refspec-pattern

Інтерпретувати <refname> як шаблон назви посилання для специфікації посилань (як використовується з віддаленими репозиторіями). Якщо ця опція увімкнена, <refname> може містити одну * у специфікації посилань (наприклад, foo/bar*/baz або foo/bar*baz/, але не foo/bar*/baz*).

--normalize

Нормалізувати refname, видаливши всі початкові символи скісної риски (/) та об’єднавши послідовності сусідніх скісних рисок між складовими імені в одну скісну риску. Якщо нормалізоване ім’я «refname» є правильним, вивести його у стандартний вивід і завершити роботу з кодом стану 0, інакше завершити роботу з кодом стану, відмінним від нуля. (--print — застарілий варіант написання --normalize.)

ПРИКЛАДИ

  • Вивід назви попереднього переглянутого елемента:

    $ git check-ref-format --branch @{-1}
  • Визначення імені посилання, яке буде використовуватися для нової гілки:

    $ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
    { echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }

GIT

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