Использование Git локально с исходным и push-запросами - PullRequest
0 голосов
/ 08 мая 2018

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

У меня есть центральное голое начало Code_bare клон со стабильной версией Code_stable, а затем пользовательские ветви разработки: Code_UserA, Code_UserB ...

Как бы я ограничил полномочия push-уведомлений из веток пользователей в пустой репозиторий? Я не / не могу использовать GitHub из-за безопасности и хочу не платить за подписку на GitLabs.

1 Ответ

0 голосов
/ 08 мая 2018

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

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

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

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

Но, чтобы быть ясным, этот подход все "составляет сценарий, который делает это"; git поддерживает это только в том случае, если «он выполнит сценарий, который вы ему дадите, прежде чем решить, принять ли push». Что возвращает нас к преимуществам использования программного обеспечения для хостинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...