Pull to refresh

Comments 29

В чём суть поста? Email пользователя GitHub в коммите ни о чём не говорит. Для подтверждения личности (коммит реально сделан этим пользователем) используют подпись коммита gpg или ssh ключём. В настройках гитхаба, к слову, есть настройка, чтобы все коммиты без подписи показывались как неверифицированные. Это не бага и не уязвимость то, о чём вы пишете. Туда же можно записать например возможность коммитить задним числом или менять какие-то данные в коммите, ту же дату например или вычистить что-то из кода.

Да, это вряд-ли уязвимость. Но то, что бага - это точно.

Тогда такой пример. Я беру какой-нибудь репозиторий, systemd например и заливаю на свой аккаунт. Ожидаю что у каждого коммита будет показан автор, разве это баг?

Не тот случай. В таком сообществе как github явно не хватает верификации комиттера по ключу SSH, в момент git push.

Если точнее - верификации name и email в changeset

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

Автор и коммитер это две разные сущности внутри коммита.

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

не знаю, поможет или нет, но можно иметь разный "глобальный" gitconfig в разных каталогах. Например, в глобальном файле ~/.gitconfig добавляете секцию "includeIf":

[user]
    name = Me Myself
    email = personal@example.com
    signingkey = D34DB44F

[includeIf "gitdir:~/src/work/"]
    path = ~/.gitconfig_work

И в файле ~/.gitconfig_work добавляете параметры, которые будут иметь приоритет для всех реп в этом каталоге:

[user]
    name = Me Myself (work)
    email = work@example.com
    signingkey = D34DC0D4

[core]
    sshCommand = ssh -i ~/.ssh/work_ed25519

Как-то пугающе сложно выглядит :) Подозреваю, должна быть простая возможность иметь локальный .gitconfig Но я не фанат git и слишком ленивый, чтобы пробовать. Так, наступил на грабли - почесал репу - написал заметку - пошёл дальше :)

Уже ничего сделать не могу - доступ закрыт.

Перенесли в статьи и закрыли, если точнее :-)

Все уже давно знают об этом Читал об этом некоторое время назад, тогда гитхаб ответил в стиле "это не баг, это фича".

UPD: я буду обновлять комментарии до того, как отправить свой.

На моей практике, до просмотра Гитхаба никогда не доходило. Либо зовут на техническое собеседование, либо сразу отказ на уровне HR по формальным признакам(сейчас ещё и гражданству) и всё.

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

Для Вас новость, что сейчас везде отказывают? В ЛинкедИн достаточно выставить локацию Грузия или Казахстан (иначе вообще отвечать не будут), и можно писать рекрутёрам и любоваться на ответы.

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

У меня такое в Германии было

По скриншоту я решил что сейчас начнется холивар на тему как надо и как не надо подписывать коммиты, или с какой периодичностью надо коммитить и тд.
Я был очень удивлен увидев вот ЭТО! эх, фантазия фантазия

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

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

Каюсь. Виноват. Но, как в том анекдоте - "если-б я в полу такие щели оставлял, меня-б давно с работы уволили".

Ну типа да. Децентрализованное хранилище кода позволяет создавать какие угодно коммиты. Если почитать ман на git-commit то окажется что можно не только менять автора и коммитера (это разные люди, как тут уже верно заметили), но и дату. Более того, `git rebase` позволяет как угодно перекраивать историю, а `git filter-branch` - вообще в автоматическом режиме удалять из истории авторов, файлы и каталоги.

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

Не, насколько мне видится, тут всё строго по юникс философии: делать одно дело и делать его хорошо. Поэтому git - сам по себе, транспорт - сам по себе. И какая там авторизация у транспорта гиту абсолютно до фонаря. Для разработчиков ядра, которые себе этот гит сделали это норм - они там и так все умные и не косячат как я, а для гитхаба - увы, надо бы верифицировать пожёстче.

Вот если бы вы прикрутили асик, и файл с солью в проект так, чтобы он вам сделал коммит с красивым хешем (по аналогии с блокчейном BTC) - это было бы по крайней мере забавно (хоть и ограниченно полезно). А приделать произвольный email к коммиту - тут разве что чуть светит фича гитхаба, который подставит аватарку по адресу.

Sign up to leave a comment.

Articles