українська мова ▾ Topics ▾ Latest version ▾ git-patch-id last updated in 2.54.0

НАЗВА

git-patch-id  — Обчислення унікальних ідентифікаторів для латок

СИНОПСИС

git patch-id [--stable | --unstable | --verbatim]

ОПИС

Читає латки зі стандартного вводу та обчислює ідентифікатори латок.

«Ідентифікатор патча» — це не що інше, як сума SHA-1 відмінностей файлів, пов’язаних із патчем, при цьому номери рядків ігноруються. Таким чином, він є «достатньо стабільним», але водночас і досить унікальним, тобто два патчі з однаковим «ідентифікатором патча» майже гарантовано є одним і тим самим.

Основне використання цієї команди — пошук ймовірних дублікатів комітів.

При роботі з результатами команди git diff-tree --patch використовується той факт, що перед латкою стоїть імʼя обʼєкта коміту, і виводиться два 40-байтових шістнадцяткових рядки. Перший рядок — це ідентифікатор латки, а другий — ідентифікатор коміту. Це можна використовувати для створення відповідності між ідентифікаторами латок та комітів для набору або діапазону комітів.

ОПЦІЇ

--verbatim

Обчислити ідентифікатор латки вхідних даних у тому вигляді, в якому вони надані, не видаляючи пробілів. Передбачає використання опції --stable та забороняє використання опції --unstable.

Це значення за замовчуванням, якщо patchid.verbatim має значення true.

--stable

Використовуйте «стабільну» суму хешів як ідентифікатор патча. З цією опцією:

  • Зміна порядку файлів diff, що складають латку, не впливає на її ідентифікатор. Зокрема, дві латки, отримані в результаті порівняння одних і тих самих двох дерев із двома різними налаштуваннями параметра -O<orderfile>, мають однаковий ідентифікатор латки, що дозволяє використовувати цей обчислений результат як ключ для індексації певної метаінформації про зміни між цими двома деревами.

  • Результат відрізняється від значення, яке видає Git 1.9 та старіші версії, або яке отримується при налаштуванні «нестабільного» хешу (див. --unstable нижче) — навіть при використанні з результатами порівняння, отриманими без застосування -O<orderfile>, що робить наявні бази даних, які зберігають такі «нестабільні» або історичні ідентифікатори латок, непридатними для використання.

  • Усі пробіли всередині латки ігноруються та не впливають на ідентифікатор.

Це значення за замовчуванням, якщо для patchid.stable встановлено значення true.

--unstable

Використовувати «нестабільний» хеш як ідентифікатор латки. При використанні цієї опції отриманий результат сумісний із значенням ідентифікатора латки, що генерується Git 1.9 та старішими версіями, при цьому пробіли ігноруються. Цю опцію можуть використовувати користувачі, які мають бази даних, що містять ідентифікатори латок, згенеровані Git 1.9 та старішими версіями (і які не працюють із переупорядкованими латками).

Це значення за замовчуванням.

ПРИКЛАДИ

git-cherry[1] показує, які коміти з вашої гілки мають коміти з відповідними ідентифікаторами латок у деяких гілках вищого рівня. Однак ця команда лише повідомляє, чи існує такий коміт. А що, якщо вам потрібно дізнатися, які саме коміти є відповідними у гілці вищого рівня? Ми можемо скористатися цією командою, щоб створити відповідність між вашою гілкою та гілкою вищого рівня:

#!/bin/sh

upstream="$1"
branch="$2"
test -z "$branch" && branch=HEAD
limit="$3"
if test -n "$limit"
then
    tail_opts="$limit".."$upstream"
else
    since=$(git log --format=%aI "$upstream".."$branch" | tail -1)
    tail_opts=--since="$since"' '"$upstream"
fi
for_branch=$(mktemp)
for_upstream=$(mktemp)

git rev-list --no-merges "$upstream".."$branch" |
    git diff-tree --patch --stdin |
    git patch-id  --stable | sort >"$for_branch"
git rev-list --no-merges $tail_opts |
    git diff-tree --patch --stdin |
    git patch-id  --stable | sort >"$for_upstream"
join -a1 "$for_branch" "$for_upstream" | cut -d' ' -f2,3
rm "$for_branch"
rm "$for_upstream"

Тепер у першому стовпці показується коміт із вашої гілки, а в другому — коміт, що відповідає ідентифікатору латки, якщо такий існує.

ДИВ. ТАКОЖ

GIT

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