Простым решением было бы написать пользовательский крючок для прослушивания каждого обновления и иметь специальное решение для проверки подлинности.
Внутри .git-файла есть каталог-крючок, который содержит примеры реализации для пользовательских перехватов. Удаление суффикса .sample просто приведет к тому, что этот крючок станет работоспособным (примеры крючков там имеют регистрацию обратного вызова по умолчанию).
Ключ обновления запускается после каждого нажатия, выход 1 просто запрещает применение этого нажатия. Что-то на линиях:
refname="$1"
oldrev="$2"
newrev="$3"
author="$(git log $newrev -1)"
# user names on the white list
whitelist=('Admin1' 'Admin2' 'Admin3' )
# branches to be controlled
master="refs/heads/master"
test="refs/heads/test"
if [[ "$refname" == "$master" || "$refname" == "$test" ]]
then
for name in "${whitelist[@]}"
do
echo $name
if [[ "$author" == *"$name"* ]]
then
exit 0
fi
done
else
exit 0
fi
echo "Master or test branch is not within your reach ! Contact your supervisor ! "
exit 1
Я настоятельно рекомендую вам написать собственный сценарий в соответствии с политикой аутентификации. Вышеупомянутый скрипт - это просто дать идею и легко взломать.
Вы можете использовать свои права доступа к linux или windows в каталог вашего происхождения –
gitlab - бесплатный git-сервер, который очень приятный. вы можете взглянуть на этот ответ: http://stackoverflow.com/a/22906383/2082964 –
Возможный дубликат [разрешений ветвей git] (http://stackoverflow.com/questions/13248246/git-branch-permissions) –