Какой смысл подписывать теги в git? - PullRequest
28 голосов
/ 14 апреля 2011

Я новичок в git, и я видел, что можно подписывать теги с помощью gpg.Я понимаю, как работает криптография с открытым ключом, и понимаю, как подписывать теги, но какой в ​​этом смысл?

Ответы [ 2 ]

29 голосов
/ 14 апреля 2011

Смысл подписания тега заключается в том, что теперь любой, у кого есть ваш открытый ключ, может доказать, что вы одобрили этот конкретный коммит как конкретную версию программы. Если они доверяют вам как официальному источнику релизов для этого пакета, то они знают, что получили официальную версию этого пакета, а не какую-то случайную версию, которая могла быть взломана злоумышленником или повреждена при транспортировке.

10 голосов
/ 14 апреля 2011

Понимание основ объектной модели git показывает значение подписывающих тегов.

На приведенной ниже диаграмме, заимствованной из Git Community Book , показан конкретный снимок. Затененные коробки - это мерзкие объекты. Объект фиксации слева относится к дереву. Думайте о дереве как о каталоге файловой системы, поэтому объект дерева ссылается на другие деревья и большие двоичные объекты. Объект BLOB-объектов хранит содержимое файла.

git objects

Каждый объект git имеет SHA1, уникальный 40-значный шестнадцатеричный дайджест, полученный из содержимого этого объекта. Сокращенные шестнадцатеричные строки над объектами представляют их соответствующие SHA1.

Объекты Git неизменны: изменение даже одного бита содержимого объекта меняет его имя. Это SHA1s полностью вниз. Любое изменение в BLOB-объекте требует нового дерева, а затем, в свою очередь, нового коммита, поэтому невозможно одновременно вставить в другое содержимое и избежать обнаружения . Знание только SHA1 коммита дает вам точный, проверенный на целостность снимок дерева.

Коммит также относится к своему непосредственному родителю (или нескольким родителям в случае слияний), поэтому гарантия еще сильнее. Изменение одного бита в любом месте в истории коммита также изменяет его SHA1. Знание только SHA1 одного коммита дает вам огромное количество информации: точное дерево в контексте точной истории вплоть до первого коммита.

Каждый может создавать коммиты, и каждый может заявить, что , скажем, Линус Торвальдс. Важно знать, какие коммиты заслуживают доверия. Подписанный тег, который ссылается на коммит, предоставляет вам всю вышеуказанную информацию вместе с проверяемой подлинностью. Во многих проектах подписанные теги используются для маркировки официальных релизов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...