Как отследить, кто вставил в репозиторий Gitosis? - PullRequest
1 голос
/ 27 июля 2010

Я использую Gitosis для управления набором репозиториев. Проблема, с которой я столкнулся, заключается в том, что Gitosis не ведет записи о том, какой пользователь нажал конкретный коммит. Единственная информация, которую я имею, - это поля «Author» и «Committer» в самом коммите, и они могут быть установлены на что-либо с помощью «pusher».

Теперь я понимаю, что один «толчок» может отправить много-много коммитов на сервер Gitosis, и каждый из них был бы создан отдельным разработчиком, поэтому я должен ограничиться, сказав, что меня интересует только Главный коммит на ветке, которая была нажата. Этот коммит (должен!) Был создан человеком, создавшим релиз, поэтому я хочу знать, кто это, чтобы я мог их побить, если возникнут проблемы.

Идея, которую я имею, состоит в том, чтобы использовать ловушку на сервере, чтобы сравнить коммиттер главного коммита с именем пользователя gitosis. Если они оба "john.doe@example.com", то отправитель является коммитером, и отправка разрешена, в противном случае она отклоняется. Это возможно? Какой хук я должен использовать - я думаю, что «обновление» - это то же самое, хотя возможны также предварительный и последующий прием.

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

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

Если бы я мог выяснить, кто выдвинул тег (или ограничил его как тегера), это было бы еще лучше!

Кевин

1 Ответ

0 голосов
/ 15 июня 2011

AFAIK Gitosis оставляет за собой полностью SSH, чтобы определить (через аутентификацию с открытым ключом), кому разрешен доступ к репо, а кому нет. Оттуда к экземпляру git-serve все пользователи идентифицируются только по полям «author» и «commiter».

Что не так с использованием полей 'author' и 'commiter'? Если вы беспокоитесь о том, что люди подделывают их, используйте два репозитория: «разработка» и «выпуск», и используйте более детальную схему управления доступом в вашем gitosis.conf, чтобы разрешить доступ на запись к «релизу» только для определенных ключей.

...