Элегантное решение для предотвращения силового толкания только на мастер - PullRequest
35 голосов
/ 14 сентября 2011

Я пытаюсь найти хороший способ не дать разработчикам принудительно заставить мастер работать с Git. Мы использовали GitHub для размещения наших удаленных репозиториев, поэтому хук pre-receive не вариант. Какие-нибудь другие решения, которые можно легко реализовать для команды разработчиков?

В качестве примечания, я не хочу вообще отключать принудительное нажатие. Иногда это неизбежное зло. Но это говорит о том, что силовое давление на мастера не может произойти.

Ответы [ 5 ]

49 голосов
/ 14 сентября 2011

Обновление

С тех пор Github представил концепцию защищенных веток. Его можно найти под Settings -> Branches -> Protected Branches

Эта «защита» может быть включена для любого филиала и для любого пользователя, включая администраторов.

Подробнее здесь - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/

Вы не можете предотвратить это в Github.

То, что вы можете сделать, это иметь промежуточное репо на вашей стороне, запустить крюк предварительного приема, чтобы предотвратить принудительный толчок и толчок из этого промежуточного репо в github и заблокировать доступ для прямого толчка в github. Да, это не элегантно, и вы теряете много функций с Github, но я не вижу другого пути.

Edit: только что наткнулся на этот ответ, который говорит то же самое и дает другой обходной путь: GitHub - запретить соавторам использовать push -f

11 голосов
/ 16 сентября 2015

GitHub представил новую функцию под названием «Защищенные ветви» для предотвращения принудительного нажатия.Вы можете настроить его в настройках хранилища> Филиалы.

github protected branches

9 голосов
/ 01 марта 2012

Я не эксперт по github, но я полагаю, что вы можете сделать это, если используете github Organizations .

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

Здесь вы создаете еще одну организационную группу «Push & Pull» для разработчиков, которая может просматривать и утверждать запросы на извлечение и объединять их с вашим основным репо.на свою вилку, и никто не может напрямую перейти к главному репо (кроме Команды с доступом «толкай / толкай»).Чтобы пуш происходил в главном репо, он всегда должен проходить через пул-запрос из репо-форка.

4 голосов
/ 28 сентября 2012

[ОБНОВЛЕНИЕ] Github теперь предоставляет функцию "защищенных веток" только для этой цели.

Easy-peasy: установите Github "Enterprise", затем следуйте инструкциям ниже: https://help.github.com/enterprise/2.1/admin/articles/blocking-force-pushes-to-a-repository/

Отказ от ответственности: это был ответ на вопрос о том, что надо делать.Оставьте линию на https://github.com/contact, и, возможно, народ Github услышит нас и включит эту опцию для масс.

2 голосов
/ 26 июня 2014

В частности, в случае с GitHub возможно блокировать принудительные нажатия, но это невозможно сделать самостоятельно.Вам нужно будет связаться со службой поддержки (support@github.com, https://github.com/contact), чтобы внести изменения в указанные вами репозитории.

...