Sobre os conjuntos de regras
Um conjunto de regras é uma lista nomeada de regras que se aplica a um repositório ou a vários repositórios de uma organização. Você pode criar conjuntos de regras para controlar como as pessoas podem interagir com tags e branches selecionados em um repositório. Você pode controlar ações como quem pode efetuar push de commits para determinado branch e como os commits precisam ser formatados ou quem pode excluir ou renomear uma tag. Por exemplo, você pode configurar um conjunto de regras para o branch feature
do repositório que exige commits assinados e bloqueia pushes forçados para todos os usuários, exceto administradores do repositório.
Para cada conjunto de regras criado, especifique a quais tags ou branches no repositórioou a quais repositórios da sua organização, o conjunto de regras se aplica. Use a sintaxe fnmatch
para definir um padrão para direcionar branches, tags e repositórios específicos. Por exemplo, você pode usar o padrão releases/**/*
para direcionar todos os branches no repositório cujo nome começa com a cadeia de caracteres releases/
. Para obter mais informações sobre a sintaxe de fnmatch
, confira "Criar conjuntos de regras para um repositório".
Ao criar um conjunto de regras, você pode permitir que alguns usuários ignorem as regras do conjunto de regras. Podem ser usuários com determinada função, como o administrador do repositório, ou podem ser equipes específicas ou GitHub Apps.
Sobre os conjuntos de regras e as tags e os branches protegidos
Os conjuntos de regras funcionam com qualquer regra de proteção de branch e de tag em um repositório. Muitas das regras que você pode definir em conjuntos de regras são semelhantes às regras de proteção, e você pode começar a usar conjuntos de regras sem substituir nenhuma das regras de proteção existentes.
Os conjuntos de regras têm as vantagens a seguir em relação às regras de proteção de branch e de tag.
- Ao contrário das regras de proteção, vários conjuntos de regras podem ser aplicados ao mesmo tempo, ou seja, você pode ter certeza de que todas as regras direcionadas a uma tag ou a um branch no repositório serão avaliadas quando alguém interagir com essa tag ou esse branch. Para obter mais informações, confira "Sobre as camadas de regras".
- Os conjuntos de regras têm status, ou seja, você pode gerenciar com facilidade os conjuntos de regras que estão ativos em um repositório sem a necessidade de excluir conjuntos de regras.
- Qualquer pessoa com acesso de leitura em um repositório pode visualizar os conjuntos de regras ativos do repositório. Isso significa que um desenvolvedor pode entender por que atingiu uma regra ou um auditor pode verificar as restrições de segurança do repositório, sem exigir acesso de administrador no repositório.
Além disso, para as organizações com um plano do GitHub Enterprise, você pode executar as ações a seguir com os conjuntos de regras.
- Configure rapidamente os conjuntos de regras no nível da organização para direcionar vários repositórios na sua organização. Para obter mais informações, confira "Como gerenciar conjuntos de regras para repositórios na sua organização".
- Crie regras adicionais para controlar os metadados de commits que entram em um repositório, como a mensagem do commit e o endereço de email do autor. Para obter mais informações, confira "Regras disponíveis para conjuntos de regras".
- Use um status "Avaliar" para testar um conjunto de regras antes de torná-lo ativo e use uma página de insights para exibir quais ações do usuário estão sendo afetadas pelas regras. Para obter mais informações, confira "Gerenciar conjuntos de regras para um repositório".
Sobre as camadas de regras
Um conjunto de regras não tem prioridade. Em vez disso, se vários conjuntos de regras forem direcionados ao mesmo branch ou à mesma tag em um repositório, as regras de cada um desses conjuntos de regras serão agregadas. Se a mesma regra for definida de maneiras diferentes entre os conjuntos de regras agregados, a versão mais restritiva da regra se aplicará. Além de serem colocados em camadas entre si, os conjuntos de regras também são colocados em camadas com regras de proteção direcionadas ao mesmo branch ou à mesma tag.
Por exemplo, considere a situação a seguir para o branch my-feature
do repositório octo-org/octo-repo
.
- Um administrador do repositório configurou um conjunto de regras direcionado ao branch
my-feature
. Esse conjunto de regras exige commits assinados e três revisões em solicitações de pull para que elas sejam mescladas. - Uma regra de proteção de branch existente para o branch
my-feature
exige um histórico de commits linear e duas revisões em solicitações de pull para que sejam mescladas. - Um administrador da organização
octo-org
também configurou um conjunto de regras direcionado ao branchmy-feature
do repositórioocto-repo
. O conjunto de regras bloqueia pushes forçados e exige uma revisão nas solicitações de pull para que elas sejam mescladas.
As regras de cada origem são agregadas, e todas as regras se aplicam. Quando existem várias versões diferentes da mesma regra, o resultado é que a versão mais restritiva da regra se aplica. Portanto, o branch my-feature
exige commits assinados e um histórico de commits linear, os pushes forçados são bloqueados e as solicitações de pull direcionadas ao branch exigirão três revisões para que sejam mescladas.