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

Элегантное решение для предотвращения принудительного нажатия только на главный

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

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

4b9b3361

Ответ 1

Update

С тех пор Гитуб представил концепцию защищенных ветвей. Его можно найти в разделе SettingsBranchesProtected Branches

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

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

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

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

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

Ответ 2

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

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

Здесь вы создаете еще одну команду "Push and Pull" для разработчиков, которая может просматривать и утверждать запросы на загрузку и объединять их в основное репо.

В основном каждый разработчик только нажимает на свою собственную вилку, и никто не может напрямую обращаться к основному репо (кроме Team с доступом Push/Pull). Для толчка, который должен произойти на основном репо, он должен всегда проходить запрос на извлечение из реплики fork.

Ответ 3

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

защищенные ветки github

Ответ 4

[UPDATE] 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 услышат нас и включит эту опцию для масс.

Ответ 5

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