Skip to main content

Sobre os conjuntos de regras

Os conjuntos de regras ajudam você a controlar como as pessoas podem interagir com branches e tags em um repositório.

Quem pode usar esse recurso?

Qualquer pessoa com acesso de leitura em um repositório pode ver os conjuntos de regras do repositório. As pessoas com acesso de administrador em um repositório ou uma função personalizada com a permissão "editar regras de repositório", podem criar, editar e excluir conjuntos de regras de um repositório e ver os insights do conjunto de regras. Para obter mais informações, confira "Sobre as funções personalizadas do repositório".

Os conjuntos de regras estão disponíveis em repositórios públicos com o GitHub Free e o GitHub Free para organizações e em repositórios públicos e privados com o GitHub Pro, o GitHub Team e o GitHub Enterprise Cloud. Para mais informações, confira "Planos do GitHub".

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.

Há um limite de 75 conjuntos de regras por repositório e 75 conjuntos de regras em toda a organização.

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.

Além disso, você pode importar regras existentes de proteção de tag para conjuntos de regras de repositório. Isso implementará as mesmas proteções de tag que você atualmente tem em vigor para seu repositório. Para obter mais informações, confira "Configurar regras de proteção para tags".

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.

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 branch my-feature do repositório octo-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.