Skip to main content

Criar conjuntos de regras para um repositório

Você pode adicionar conjuntos de regras a um repositório para controlar como as pessoas podem interagir com tags e branches específicos.

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.

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".

Introdução

Você pode criar conjuntos de regras para controlar como os usuários podem interagir com as tags e os branches selecionados em 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 certas permissões, equipes específicas ou GitHub Apps. Para obter mais informações sobre conjuntos de regras, confira "Sobre os conjuntos de regras".

Para criar um conjunto de regras, conclua os procedimentos a seguir:

Criar um conjunto de regras de branch ou tag

  1. No GitHub.com, navegue até a página principal do repositório.

  2. Abaixo do nome do repositório, clique em Configurações. Caso não consiga ver a guia "Configurações", selecione o menu suspenso , clique em Configurações.

    Captura de tela de um cabeçalho de repositório que mostra as guias. A guia "Configurações" é realçada por um contorno laranja-escuro.

  3. Na barra lateral esquerda, em "Código e automação", clique em Regras e em Conjuntos de regras.

    Captura de tela da barra lateral da página "Configurações" de um repositório. O submenu "Regras" está expandido, e a opção "Conjuntos de regras" está realçada em laranja.

  4. Você pode criar um conjunto de regras direcionado a branches ou a tags.

    • Para criar um conjunto de regras direcionado a branches, clique em Novo conjunto de regras de branch.

    • Para criar um conjunto de regras direcionado a tags, selecione e clique em Novo conjunto de regras de tag.

      Captura de tela da página "Conjuntos de regras". Ao lado do botão "Novo conjunto de regras de branch", um menu suspenso está expandido, com uma opção rotulada "Novo conjunto de regras de tag" realçada em laranja.

  5. Na seção "Geral", digite um nome para o conjunto de regras, selecione Desabilitado e clique em um dos seguintes status de imposição:

    • Ativo: seu conjunto de regras será imposto após a criação.
    • Desabilitado: seu conjunto de regras não será imposto.

Conceder permissões de bypass para seu conjunto de regras

Você pode conceder permissões de ignorar determinadas funções, equipes ou aplicativos para seu conjunto de regras. Os seguintes itens são qualificados para acesso de bypass:

  • Administradores de repositório ou proprietários de organizações
  • A função de manutenção ou gravação ou funções de repositório personalizadas com base na função de gravação
  • Teams
  • GitHub Apps
  1. Para conceder permissões de bypass para o conjunto de regras, na seção "Lista de bypass", clique em e depois clique em Somente para solicitações de pull.

    O ator selecionado agora é obrigado a abrir uma solicitação de pull para fazer alterações em um repositório, criando uma trilha digital clara com suas alterações. O ator pode então optar por ignorar quaisquer proteções de branch e mesclar essa solicitação de pull.

Escolher quais branches ou tags direcionar

Para direcionar branches ou tags na seção "Branches de destino" ou "Tags de destino", selecione Adicionar um destino e escolha como deseja incluir ou excluir branches ou tags. Use a sintaxe fnmatch para incluir ou excluir branches ou tags com base em um padrão. Para obter mais informações, confira "Como usar a sintaxe fnmatch".

Você pode adicionar vários critérios de direcionamento ao mesmo conjunto de regras. Por exemplo, você pode incluir o branch padrão, incluir os branches que correspondam ao padrão *feature* e excluir especificamente um branch que corresponda ao padrão not-a-feature.

Selecionar proteções de branch ou tag

Na seção "Proteções de branch" ou "Proteções de tag", selecione as regras que deseja incluir no conjunto de regras. Ao selecionar uma regra, você poderá inserir configurações adicionais para ela. Para obter mais informações sobre as regras, confira "Regras disponíveis para conjuntos de regras".

Observações: se você selecionar Exigir verificações de status antes da mesclagem, na seção "Configurações adicionais":

  • Você poderá inserir o nome de cada verificação de status que deseja exigir. Para terminar de adicionar a verificação de status como um requisito, você deve clicar em .
  • Se você selecionar Exigir que branches sejam atualizados antes da mesclagem, deverá definir uma verificação para que a proteção entre em vigor.

Para concluir a criação do conjunto de regras, clique em Criar. Se o status de imposição do conjunto de regras for definido como "Ativo", o conjunto de regras entrará em vigor imediatamente.

Usar a sintaxe fnmatch

Use a sintaxe fnmatch para definir padrões direcionados aos nomes de branches e tags ao criar um conjunto de regras.

Use o curinga * para encontrar a correspondência de qualquer cadeia de caracteres. Como o GitHub usa o sinalizador File::FNM_PATHNAME para a sintaxe File.fnmatch, o curinga * não corresponde aos separadores de diretório (/). Por exemplo, qa/* corresponderá a todos os branches que começam com qa/ e que contêm uma barra "/", mas não corresponderá a qa/foo/bar. Você pode incluir qualquer quantidade de barras "/" após qa com qa/**/*, o que corresponderá, por exemplo, a qa/foo/bar/foobar/hello-world. Você também pode estender a cadeia de caracteres qa com qa**/**/* para tornar a regra mais inclusiva.

Para obter mais informações sobre as opções de sintaxe, confira a documentação de fnmatch.

Observação: embora GitHub seja compatível com File::FNM_PATHNAME na sintaxe fnmatch, não há suporte para File::FNM_EXTGLOB.