Журналы Gitolite (в .gitolite/logs/gitolite-*
) пользователя Gitolite для каждого нажатия.Есть немного больше работы, чтобы определить толчок, который ввел конкретный коммит, но он должен быть прямым (один из способов: бросать легкие теги на кончике каждого толчка, затем использовать git name-rev
, чтобы найти первый тег послеcommit).
Большинство пользователей Gitolite, вероятно, имеют только один связанный ключ SSH (keydir/user.pub
), но у одного пользователя может быть несколько ключей SSH (keydir/user@*.pub
).
Таким образом, для основанного на SSH Gitolite вы можете сопоставить каждый коммит с одним (или несколькими) ключами SSH.
Другой вопрос (доверяете ли вы ключу SSH для точной идентификации конкретного человека)Доверяете ли вы пользователям, чтобы их личные SSH-ключи были защищены?).
Gitolite также может ограничивать доступ к Git через «умный HTTP».В этом случае веб-сервер предоставляет имя пользователя Gitolite в переменной среды REMOTE_USER (т. Е. Вместо использования файла .ssh/authorized_keys
для идентификации пользователя на основе ключа SSH).Идентификация и аутентификация полностью зависит от самого веб-сервера (обычно это просто имя пользователя и пароль, но SSL-сертификаты для каждого пользователя могут использоваться для чего-то более похожего на доступ по SSH).
Итак, для HTTPGitolite на основе, вы можете сопоставить каждый коммит с аутентификацией, выполняемой веб-сервером.
GitHub имеет некоторую похожую информацию, которую можно запросить через Events часть GitHub API (ранее он, казалось, был доступен только как часть «новостной ленты» для ваших просмотренных репозиториев).Каждый PushEvent идентифицирует пользователя GitHub, который выполнил push, имя ref (ветви) было обновлено, имя (хэш SHA1) нового ref «head» (новый совет обновленной ветви)и список коммитов.