Поэтому кто-то из коллег просмотрел мою работу и сказал, что я всегда должен подписывать свои коммиты и теги криптографически. Когда его спросили, почему, он не знал, как мне это объяснить, и сказал: «Это просто хорошая вещь».
Пытаясь избежать очевидного сценария шимпанзе , почему я должен на самом деле? Неужели так много явных преимуществ и нет недостатков?
По каким практическим причинам я хочу подписать каждый коммит и сделанный мной тэг?
git
cryptography
Мадара Учиха
источник
источник
Ответы:
(Это в значительной степени основано на «Истории ужасов Git: целостность репозитория с подписанными коммитами» - очень хорошее чтение и больше информации, чем я мог бы вставить в ответ.)
Существует несколько способов, с помощью которых репозиторий git может быть скомпрометирован (это не недостаток безопасности, а просто факт жизни - из-за этого не следует избегать использования git). Например, кто-то, возможно, подтолкнул к вашему хранилищу, утверждая, что вы. Или, если на то пошло, кто-то мог подтолкнуть к чьему- либо хранилищу, утверждая, что вы - вы (кто-то мог подтолкнуть к своему собственному хранилищу, утверждая, что вы тоже). Это просто часть жизни в DVCS.
Просто в качестве примера:
Там я изменил свою конфигурацию git, притворившись, что я - ты. И теперь я могу сделать коммит и позволить этим коммитам каким-то образом попасть в производственную сборку, и похоже, что вы это сделали.
Подписав коммиты (и теги), можно доказать, что определенные коммиты и теги были от вас (а вещи, которые не подписаны, не должны были попасть в рабочую сборку). Это действительно ключ ко всему - подписывая коммиты, вы говорите, что это ваша работа.
Аспект «твоя работа» особенно важен в ядре linux (и, следовательно, в git), в который иногда попадают иски об авторских правах. Подписывая коммиты, вы говорите, что имеете право на программное обеспечение - оно отслеживает происхождение. Может случиться так, что у вас нет доступа к источнику, который заявлен как авторское право, и заявка является необоснованной. Возможно, компания забыла, что вы работали на них несколько лет назад и под их руководством добавили материал в ядро или что-то в этом роде.
Есть некоторые дебаты относительно того, должен ли каждый коммит быть подписан. От подписи GPG для git commit? (в далеком 09 году) Линус писал:
Более подробную информацию о том, как войти в git, можно прочитать там же.
Тем не менее, он в любом случае превратился в мерзавца.
Похоже, что большинство согласны с тем, что подписывать коммиты не нужно, но подписывать теги очень хорошо. Этот пост в блоге, связанный сверху, предполагает, что в любом случае нужно все подписывать. Как я уже сказал, есть некоторые споры о том, необходим ли каждый коммит или нет.
Ключ к дискуссии «подписать каждый коммит», вероятно, связан с используемым вами рабочим процессом. Большинство людей совершают кучу коммитов в своем локальном репо, а затем выдвигают этот набор. Этого должно быть достаточно, чтобы пометить окончательную коллекцию (при условии, что вы убедитесь, что все изменения верны). Если вы работаете в среде, в которой перемещается множество отдельных коммитов, различие между тегом и коммитом становится менее… четким, и подписывание коммитов может стать более полезным.
источник
commit.gpgsign = true
и я не могу установить никаких недостатков. Хотя это может быть глупо, это не кажется слишком дорогим.