LINUX.ORG.RU

Используют ли в вашей команде GPG-подписи коммитов


1

2
  1. Зачем это нужно? 369 (47%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Нет, не подписывают 284 (36%)

    ******************************************************************************************************************************************************************************************************************************************************

  3. Да, у нас все подписывают коммиты 95 (12%)

    **********************************************************************************

  4. Нет, но я пользуюсь 34 (4%)

    *****************************

Всего голосов: 782

★★★★★

Проверено: beastie ()
Последнее исправление: Dendy (всего исправлений: 3)

Ответ на: комментарий от deterok

да я каждоё своё сообщение в джаббере подписываю уникальной подписью, чоужтам. враг не раскусит, друг поймёт.

darkenshvein ★★★★★
()
Ответ на: комментарий от buddhist

Да, и предлагаю 15 лет не подпускать к профессии тех, кто подумал, что речь идет о комментарии к коммиту.

У тебя в последнее время много радикально-тоталитарных идей по поводу программистов. Может, напишешь какую-нибудь статейку, чтоб все сразу можно было почитать? А то ждать, пока ты очередной совет выложишь, очень долго.

E ★★★
()

когда голосовал — был не уверен, что речь о GPG, поэтому проголосовал за «зачем это нужно». после уточнения, ответ прежний. зачем это нужно? :)

а еще мне интересно, сколько из проголосовавших за «Да, у нас все подписывают коммиты» подумали что речь о commit message.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

не знаю как в остальных VCS, в которых есть подпись коммитов, поэтому буду говорить про git.

с авторизацией/аутентификацией в git печаль-беда, кто угодно может сделать push изменений от имени любого пользователя. Можно наверно обмазываться хуками и строить стройную систему костылей, которая позволит с этим жить, но не думаю что это кого-то устроит.
поэтому если в git репозиторий есть доступ на запись у более, чем одного человека, то для того чтобы определить кто же на самом деле автор изменений нужна криптография, и подписывание коммитов нужно именно для этого.

по теме - нет, не подписываем, мы вообще в каменном веке живем и только-только переезжаем с svn.

maloi ★★★★★
()
Ответ на: комментарий от deterok

так я по ssh-ключу пойму(он не один для всех) источник хрени + по логам логинов можно восстановить, кто и откуда делал коммиты. А дальше дело техники: развернуть бэкап за n-ое число. Кроме того, благодаря распределенности git'а, получается фигова туча бекапов за разное время. Если я не правильно понял, то поправь, мне правда интересно, в чем ключевой профит от подписи в случае с git.

fang90 ★★★★★
()
Ответ на: комментарий от deterok

«0000»

Это был любитель джента (для тех, кто понимает)...

Indexator ★★★
()
Ответ на: комментарий от I-Love-Microsoft

Логика типичного проприетараста..

А вообще, насколько я помню, в открытых гпл-проектах, согласно лицензии, каждый автор кода должен иметь право на указание своего авторства.. Подпись гарантирует, что именно ты написал этот код, а не твой сосед по школьной парте Вася Пупкин и никто кроме тебя не присвоит себе эту заслугу.. Да и вообще для разбирательств полезно в любой компании в проектах под любой лицензией..

Indexator ★★★
()
Ответ на: комментарий от Indexator

Не логика, а незнание. Твои слова убедили меня, в самом деле только подпись такие задачи решает. В общем, спорить иногда полезно. Твоя правота меня покорила (без шуток) :)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от fang90

так я по ssh-ключу пойму(он не один для всех) источник хрени + по логам логинов можно восстановить, кто и откуда делал коммиты.

как ты это поймешь, если время коммита никак не связано с временем push, а ssh-ключ никак не связан с тем что написано в коммите?
я могу сегодня запушить изменения, в которых будет сказано что ты полгода назад сделал хрень, а поймут об этом только ещё через полгода, как ты по логам определишь это?

maloi ★★★★★
()
Ответ на: комментарий от maloi

если время коммита никак не связано с временем push

git reflog. Но запушить старые комммит можно только через force push, который может(и должен) быть запрещен на серве:)

ssh-ключ никак не связан с тем что написано в коммите

Да, но он указывает на отправителя коммита. Т.е. частично подтверждает достоверность.

В случае с gpg возможен ровно такой же «фокус» как ты описал, разве, что кто-то может подумать, что подпись - панацея от всего.

fang90 ★★★★★
()
Последнее исправление: fang90 (всего исправлений: 1)
Ответ на: комментарий от maloi

А там разве не ломается голова от замены истории что другие после этого сразу не смогут обновиться? (в их локальных хранилищах надо тоже точно такую же форсирующую команду выполнить).

EvilFox ★★
()
Ответ на: комментарий от EvilFox

А там разве не ломается голова от замены истории что другие после этого сразу не смогут обновиться? (в их локальных хранилищах надо тоже точно такую же форсирующую команду выполнить).

ломается, но лечится ключом --rebase, который у многих включен по-умолчанию.

maloi ★★★★★
()
Ответ на: комментарий от fang90

git reflog.

не хранится вечно, так же как и логи ssh-сервера.

Но запушить старые комммит можно только через force push, который может(и должен) быть запрещен на серве:)

нет, старый коммит я могу запушить когда угодно и куда угодно, это переписать существующие я могу только через force push.

Да, но он указывает на отправителя коммита. Т.е. частично подтверждает достоверность.

подтверждает достоверность чего?

В случае с gpg возможен ровно такой же «фокус» как ты описал, разве, что кто-то может подумать, что подпись - панацея от всего.

ты умеешь подделывать gpg подписи?

maloi ★★★★★
()
Ответ на: комментарий от maloi

не хранится вечно, так же как и логи ssh-сервера.

сомнительное утверждение:) Сейчас стоимость хранения 1мб информации ничтожно мала, что позволяет хранить логи, в худшем случае, в сжатом виде, но вечно.

нет, старый коммит я могу запушить когда угодно и куда угодно

ok, может быть и так, но при этом поменяется refs

подделывать gpg подписи

Зачем подделывать? Достаточно иметь ключ, если слился ssh ключ юзера по которому был сделан коммит, то и нет гарантии, что не был слит gpg-ключ.

fang90 ★★★★★
()
Ответ на: комментарий от fang90

сомнительное утверждение:) Сейчас стоимость хранения 1мб информации ничтожно мала, что позволяет хранить логи, в худшем случае, в сжатом виде, но вечно.

ок, по умолчанию не хранится вечно ни то ни другое

ok, может быть и так, но при этом поменяется refs

а у тебе никогда не приходилось скачивать репозиторий, в котором год не было ни одного коммита, а твоих коммитов вообще нет?
у меня вот такое происходит регулярно, как ты думаешь, смогу я заметить изменившиеся ref-ы?

Зачем подделывать? Достаточно иметь ключ, если слился ssh ключ юзера по которому был сделан коммит, то и нет гарантии, что не был слит gpg-ключ.

я уже говорил, что ни аутентификации ни авторизации в git считай что нет, если получил права на запись - можешь творить все что угодно. у нас так вообще робот делает пуш из одного репозитория в другой - ssh-ключ у него есть, а gpg ключа - нет.

и да, как я уже говорил можно обложиться костылями и делать вид что так и должно быть, а можно воспользоваться надежным решением.

maloi ★★★★★
()
Ответ на: комментарий от J

А что такое команда?

Это сбоирще чуваков и начальница манда.

splinter ★★★★★
()
Ответ на: комментарий от Indexator

Наоборот. Вася пупкин может сделать вид, что это его коммит (уберёт твою подпись, поставит свою). Но он не сможет сделать вид, что это твой коммит.

kvap
()
Ответ на: комментарий от kvap

Но он не сможет сделать вид, что это твой коммит.

Что тоже немаловажно. У меня как-то была ситуация, что от моего аккаунта закоммитили изменения, крадущие деньги. Хорошо, что крысу все-таки поймали.

goingUp ★★★★★
()
Ответ на: комментарий от kvap

Тогда в моем комменте нужно поправить так:

Подпись гарантирует, что именно ты подписал этот код

И добавить, что таким образом ты ручаешься за этот код и не можешь его изменить, не переподписав его, иначе подпись превращается в мусор. Поэтому механизм подписей, таки, больше подходит в плане безопасности и сохранения своего честного имени (как и поведал нам goingUp), чем для подтверждения авторства... :)

Indexator ★★★
()
Ответ на: комментарий от goingUp

Хорошо, что крысу все-таки поймали.

И посадили?

Хотелось бы более подробной истории, если можно, я уже попкорном обложился и устроился поуютней.. :) Наверняка ложечки-то нашлись, но осадочек остался? :D

Indexator ★★★
()
Последнее исправление: Indexator (всего исправлений: 1)
Ответ на: комментарий от Indexator

В нашем веку сажать таких не принято!

Расплавленное олово ему в ж литров 7 и все, пусть бежит на все 4 измерения :)

deterok ★★★★★
() автор топика
Ответ на: комментарий от Indexator

Я не особо интересовался, этот человек уволился за несколько месяцев до инцидента. Но говорили, что будут с ним судится. А про ложечки, осадок вроде не остался. Я походу единственный, кто от этого парился :)

goingUp ★★★★★
()
Ответ на: комментарий от Indexator

А, да, он же на меня обиделся и заигнорил, точно)) Передайте кто-нибудь ему мое послание, пусть порадуется.. :)

Indexator ★★★
()
Ответ на: комментарий от I-Love-Microsoft

Почитай коменты, тебе кто-то что-то написал, но ты его заигнорил, ну в общем вот так вот кажется наверное.

deterok ★★★★★
() автор топика
Ответ на: комментарий от maloi

с авторизацией/аутентификацией в git печаль-беда, кто угодно может сделать push изменений от имени любого пользователя. Можно наверно обмазываться хуками и строить стройную систему костылей, которая позволит с этим жить, но не думаю что это кого-то устроит

Это только в какноничной реализации от линуса, в тоже gitblit - это в админке по дефолту запрещено пушить не свои коммиты.

Deleted
()
Ответ на: комментарий от maloi

кто угодно может сделать push изменений от имени любого пользователя

А как ты подпишешь изменения от имени «любого пользователя», если закрытый ключ есть только у «любого пользователя»?

Indexator ★★★
()

Нет, не подписывают, зачем это нужно?

drull ★☆☆☆
()
Ответ на: комментарий от goingUp

Зачем судиться? Найти и натянуть глаз на жопу.

drull ★☆☆☆
()
Ответ на: комментарий от deterok

кто-то что-то написал

:D Спасибо, но лучше бы на меня сослался или на мой коммент, а то может у него половина ЛОРа заигнорена и он понятия не имеет о ком ты говоришь)))

Indexator ★★★
()
Ответ на: комментарий от Indexator

А как ты подпишешь изменения от имени «любого пользователя», если закрытый ключ есть только у «любого пользователя»?

эм, я вроде говорил что без подписей ты это можешь сделать, ты уверен что прочитал и понял мое сообщение?

maloi ★★★★★
()
Ответ на: комментарий от Deleted

Это только в какноничной реализации от линуса, в тоже gitblit - это в админке по дефолту запрещено пушить не свои коммиты.

ну да, если из DVCS оторвать D, то можно и запретить.

maloi ★★★★★
()
Ответ на: комментарий от maloi

А, тогда ок, просто из поста не совсем понятно, есть у гита подписи или нет. Первое предложение как раз ввело меня в заблуждение, что у него тоже есть, только криво реализовано, просто про остальные ты не в курсе))

Я почему-то наивно полагал, что у гита есть подписи... Как теперь жить? :C

Indexator ★★★
()
Ответ на: комментарий от Indexator

я нихрена не понял

у гита gpg-подписи есть, но необязательные
по-умолчанию вычисляется хеш из родительского коммита, текущего состояния файлов, времени, автора и прочих аттрибутов коммита. Хеш конечно подделать нельзя, но никто не мешает создать коммит с любыми аттрибутами - хоть автором, хоть временем.
Именно про дефолтные коммиты без подписи я и говорил.
При этом можно коммиты (и теги) подписывать, и именно о том делают ли это люди данный опрос.

maloi ★★★★★
()
Ответ на: комментарий от maloi

я нихрена не понял

«Мужик, я ни хера не понял, что ты мне сказал, но ты мне близок. Ты заговорил и достучался до сердца.» :D

Ну, ты меня окончательно запутал)) Значит у гита все-таки есть механизм подписей. Так-то понятно, что если их не использовать, то можно любой коммит сварганить от любого имени.

Насчет хэшей недопонял. Почему это их нельзя подделать? Просто после того, как напакостил, пересчитываешь их и все. Только это немного осложняется тем, что раз хэш включает в расчет родительский коммит, тогда если у похаченных коммитов есть дочерние, то получается надо будет и их пересчитать, но это лишь дело техники. Хэши ведь, насколько я понимаю, нужны чисто для работы внутренних механизмов гита: например, для того, чтобы по ним ссылаться на конкретный коммит или для проверки целостности репозиториев, например чтобы после клонирования или после пулла или пуша изменений убедиться, что ничего не побилось и не потерялось... Не?

Indexator ★★★
()
Ответ на: комментарий от Indexator

Просто после того, как напакостил, пересчитываешь их и все. Только это немного осложняется тем, что раз хэш включает в расчет родительский коммит, тогда если у похаченных коммитов есть дочерние, то получается надо будет и их пересчитать, но это лишь дело техники. Хэши ведь, насколько я понимаю, нужны чисто для работы внутренних механизмов гита: например, для того, чтобы по ним ссылаться на конкретный коммит или для проверки целостности репозиториев, например чтобы после клонирования или после пулла или пуша изменений убедиться, что ничего не побилось и не потерялось... Не?

Хеши нужны для идентификации коммитов. Если я выкачиваю обновления из удаленного репозитория - git сначала ищет наиболее старый совпадающий коммит (по хешу). Если кто-то в удаленном репозитории обновил один коммит и переписал историю - это мгновенно видно при pull-е, может приводить к конфликтам и все такое. Конечно таких проблем нет, если в репозиторий уже год никто не коммитил и у всех давно потерялась скачанная копия.

Насчет хэшей недопонял. Почему это их нельзя подделать?

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

maloi ★★★★★
()
Ответ на: комментарий от maloi

Хеши нужны для идентификации коммитов.

Именно про это я и написал:

чтобы по ним ссылаться на конкретный коммит

нельзя сделать изменить коммит и получить тот же самый хеш

Это-то понятно, но я и не подразумевал получение того же самого хеша. Я как раз говорил про расчет новых хешей. Поясню, что имелось в виду далее.

Если кто-то в удаленном репозитории обновил один коммит и переписал историю - это мгновенно видно при pull-е, может приводить к конфликтам и все такое.

Да, но ситуации могут быть разные и в некоторых случаях перезапись коммитов может быть не замечена.

Приведу пример:
Некто Вася пишет свой быдлокод. Взбалтывает, но не смешивает. Коммитит его, но не пушит. А потом решает пойти выпить чашечку кофа. Его коллега, некто Петя, пользуясь моментом и доверием внутри команды, пока Васи нет, подло и вероломно хачит быдлокод Васи в его незапушенных коммитах и перегенерирует для них новые хеши. Далее Вася, после того, как устал клеить секретутку, возвращается в очередной раз отшитым и, ничего не подозревая, без единого алярма, пушит свои, уже похаченные, коммиты на удаленный репозиторий, которые оттуда, так же без единого алярма, разлетаются всем остальным членам команды, далее - везде. А Вася спокойно продолжает пописывать свой быдлокод, как ни в чем не бывало, пока за ним не приедет черный воронок, и все шито-крыто.

Вариант? :)

Indexator ★★★
()
Ответ на: комментарий от Indexator

От распиздяйства персонала ни одна технология не сможет спасти, и gpg подписи Петя точно так же поставит за Васю, если тот не следит за своим рабочим местом.

maloi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.