мерзавец: кто нажал в пост-получить крючок - PullRequest
6 голосов
/ 21 сентября 2010

Как определить, кто выдвинул в хранилище?

т.е. Кто-то делает git push origin master, а в репо origin репо мне нужно использовать имя или электронную почту Somebody.

Ответы [ 3 ]

10 голосов
/ 21 сентября 2010

Если вы используете протокол SSH для отправки изменений на сервер, когда каждый пользователь имеет свою собственную учетную запись на сервере, тогда ваш сценарий должен работать как пользователь, выполняющий передачу. Таким образом, вы должны иметь возможность использовать whoami или id -un, чтобы получить имя пользователя, выполняющего толчок.

Если вы не используете эту настройку, лучший способ отследить, кто толкает, вероятно, это использовать Gitolite , мощную систему аутентификации и авторизации Git. В Gitolite вы можете использовать update.secondary и post-update.secondary hooks , для которых переменная окружения GL_USER будет установлена ​​для текущего пользователя Gitolite.

0 голосов
/ 21 сентября 2010

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

0 голосов
/ 21 сентября 2010

Я не уверен, что Git предназначен для управления такого рода контролем доступа.

Вот почему у вас есть оболочки на основе ssh, такие как gitosis или gitolite , которые обеспечат вам необходимый уровень аутентификации.

...