GIT: как защитить ветку от удаления другими разработчиками?

после первого выпуска нашего продукта, мы будем переключаться на различные ветви для основной разработки и разработки функций. Есть ли способ создать ветку таким образом, чтобы мы могли защитить ее от удаления (случайно или намеренно), если вы не являетесь конкретным пользователем (на основе роли или имени пользователя)?

Я попытался создать образец репозитория git на нашей локальной машине gitlab, затем защитил одну из ветвей от опции на веб-сайте, но затем я удалось удалить его с помощью git push origin :branch_name. Заранее спасибо!

будет ли решение работать на github.com?

5 ответов


есть много способов решить это:

  1. сделайте еще одно РЕПО, которое является песочницей, и дайте доступ только для чтения к мастеру. Если они удаляют случайно, они могут получить ветку из мастер-РЕПО. Это предполагает, что вы используете github только для своих репозиториев, кроме локальных репозиториев dev.
  2. крючки установки в репозитории, которые не позволяют удалять ветви, если вы не являетесь конкретным пользователем. Вы не можете сделать это на GitHub, поскольку они не допускают произвольный код выполняется на их серверах. Если вместо этого вы получите локальное РЕПО, вы можете это сделать.
  3. настройка локальной установки gitolite для управления ветвями с разрешениями.

вы можете использовать разрешения ветвей на сервере, добавив крючок предварительного получения, который защищает ваш репозиторий, и добавить что-то вроде этого в файл конфигурации в вашем голом репозитории:

[hooks]
        allowedtomerge = user1,user2,user3
        protectedbranches = master

с OP shershams указано в комментариях

мы планируем перейти на github, и мне было интересно, есть ли у них что-то реализовано там для этой цели

оказывается, что в GitHub что-то реализовано (и доступно в ближайшее время):

защищенные ветви и необходимые проверки состояния (3 сентября 2015 года) позволит вам защитить бранч:

  • против принудительного толкнул
  • на удалении
  • против объединенных изменений, пока не пройдут необходимые проверки состояния

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


У меня есть модель ветви git, которая имеет ветви dev/master/production, используемые для поэтапных развертываний, поэтому есть ветви, которые я хочу защитить от удаления. Я использую запросы pull и Visual Studio Team Services, поэтому после каждого запроса pull от dev к master, например, VSTS спросит, хочу ли я удалить исходную ветвь (dev).

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

Я создал ветку dev под названием "сохранить", сделал изменение одной строки, открыл запрос на вытягивание против dev и просто оставил его открытым.

пока есть открытый запрос pull против dev, dev не может быть удален, и VSTS не спросит, хочу ли я удалить ветку.

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


Если вы используете Gitlab тут вы можете настройка защищенной отделения:

настройка защищенного отделения

чтобы защитить ветку, вам нужно иметь хотя бы уровень мастер-разрешений. Обратите внимание, что главная ветвь защищена по умолчанию.

  1. перейдите к настройкам вашего проекта ➔ Repository

  2. прокрутите, чтобы найти защищенные ветви раздел.

[...]