Подтвердить что ты не робот

Git разрешения ветвей

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

Если возможно, как я попытаюсь это сделать?

4b9b3361

Ответ 1

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

Edit: Для специфических разрешений ветвей вам нужен уровень авторизации на стороне сервера, например Gitolite - очевидно, для этого вам необходимо управлять собственным сервером Git.

Ответ 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, я все равно сделаю файл самого крючка только для чтения.

работ: