2015-03-03 3 views
1

Есть ли простой способ настройки нашего репозитория git таким образом, чтобы только предварительно определенный набор пользователей мог входить в главную ветвь по происхождению?Управление git - разрешение на разблокировку ведущего филиала

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

Любые комментарии и предложения будут приветствоваться.

+0

Вы можете использовать свои права доступа к linux или windows в каталог вашего происхождения –

+0

gitlab - бесплатный git-сервер, который очень приятный. вы можете взглянуть на этот ответ: http://stackoverflow.com/a/22906383/2082964 –

+0

Возможный дубликат [разрешений ветвей git] (http://stackoverflow.com/questions/13248246/git-branch-permissions) –

ответ

1

Простым решением было бы написать пользовательский крючок для прослушивания каждого обновления и иметь специальное решение для проверки подлинности.

Внутри .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 

Я настоятельно рекомендую вам написать собственный сценарий в соответствии с политикой аутентификации. Вышеупомянутый скрипт - это просто дать идею и легко взломать.

0

У Git отсутствует какая-либо система разрешений. Вам нужно будет использовать что-то еще, чтобы управлять ими, например GitLab или gitolite. Вы также можете создавать свои собственные, используя git hooks.

+0

Thx для вашего ответа, однако мне нужно больше подробностей относительно того, как я могу написать предварительный прием. Мы делаем auth по базовому http. Я не вижу, как я когда-либо собираюсь получать аргументы stdin с серверной стороны, которые содержат информацию auth. – Pumpkin

+0

Это означает, что упомянутые вами инструменты предусматривают оплату в нашем случае, и я не могу рассматривать их как приемлемое решение, даже если они не требуют оплаты, видя, как есть другие варианты. – Pumpkin

+0

Вы можете установить GitLab Community Edition и gitolite на свои собственные серверы, не платя ничего. Если вы действительно хотите сворачивать самостоятельно, начните с [чтения документов] (http://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols). – orkoden

Смежные вопросы