Git разрешения ветвей
Можно ли установить разрешения ветвления с помощью git bash? Я хотел бы иметь гораздо более строгие разрешения для главной ветки, чтобы некоторые люди могли использовать ветвь разработки и зафиксировать ее и не могут сами изменять ветвь мастера.
Если возможно, как я попытаюсь это сделать?
Ответы
Ответ 1
Git не имеет специальных разрешений для ветки. Вы можете либо сделать весь репозиторий только для чтения людям, либо создать один закрытый и один публичный репозиторий, а только открыть ветку разработки для публики, сохраняя при этом мастер только в ваш частный репозиторий.
Edit:
Для специфических разрешений ветвей вам нужен уровень авторизации на стороне сервера, например Gitolite - очевидно, для этого вам необходимо управлять собственным сервером Git.
Ответ 2
bitbucket поддерживает ограничение ветки. См. Ссылку здесь: https://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/
Ответ 3
Типичный сценарий, когда это может потребоваться, - это ограничить доступ к официальным (или выпускным) ветвям к подмножеству людей в команде. Хорошая стратегия здесь может заключаться в том, чтобы иметь два репозитория - первичное репо с более жестким контролем доступа и другое репо, доступное всем в команде и используемое для настройки рабочих ветвей. И при необходимости оттяните от рабочих ветвей до основного репо. Конечно, вы можете настроить его, чтобы он соответствовал вашей структуре и потребностям вашей команды.
Это может работать особенно хорошо с такими сервисами, как github.
Ответ 4
Если ваша команда разработчиков представляет собой цивилизованную группу, которая нуждается только в дружеском напоминании, вы можете отклонить push с помощью предварительного приема на стороне сервера:
#!/bin/bash
# Extract the user email (%ae) from the last commit (author email)
USER_EMAIL=$(git log -1 --format=format:%ae HEAD)
# Looping through all the pushed branches
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ] && [ "[email protected]_company.com" != $USER_EMAIL ]; then
echo "Naughty naughty!"
exit 1 # fail, i.e. reject push
fi
done
Хотя пользователи могут легко подделать свой адрес электронной почты git, я все равно сделаю файл самого крючка только для чтения.
работ: