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

GitHub - запретить сотрудникам использовать push -f

Есть ли способ предотвратить принудительное нажатие на ветку или репозиторий?

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

В идеале, на мой взгляд, можно было бы заблокировать несколько ветвей на каждый репозиторий и не позволять всем, кроме владельца хранилища, нажимать на них.

4b9b3361

Ответ 1

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

В общем, рабочий процесс с Git или действительно любая система управления распределенной версией - это то, что вы не разрешаете другим людям входить в ваш репозиторий. Вместо этого вы вытаскиваете их. Это требует гораздо более низкого уровня доверия. Итак, это будет обходным путем №1: не позволяйте им толкать, иметь вилку, а затем тянуть с них. Таким образом, вы можете контролировать, что входит в ваш репозиторий.

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

В качестве третьего решения можно использовать несколько репозиториев. Это сочетание двух других подходов: у вас есть один репозиторий, к которому ваши соавторы могут нажать, и другой, к которому только вы имеете доступ, который вы втягиваете из первого репозитория.

Во всяком случае, вы должны подать запрос на функцию с помощью GitHub (особенно, если вы являетесь платежным клиентом!), поскольку это кажется полезной функцией.

Ответ 2

GitHub анонсировала функцию "защищенные ветки":

[...] новая функция под названием "Защищенные ветки", которая дает администраторам репозитория возможность отключить принудительное нажатие на определенные ветки. [...] перейдите на вкладку "Ветки" в настройках репозитория и защитите ветки.

Источник: https://github.com/blog/2051-protected-branches-and-required-status-checks

Репозиторий > Настройки > Филиалы