GitHub has announced the general availability of repository rules, a new feature designed to enhance branch protections and ensure consistency across repositories. The new rules are designed to be flexible and easy to implement, providing developers with a more streamlined approach to managing their repositories.
Streamlining Branch Protections
According to the official announcement by Patrick Knight, repository rules allow developers to define branch protections in their public repositories with ease. This includes the ability to protect multiple branch patterns using a single ruleset, making it easier to manage and enforce rules across different branches.
A ruleset, as defined in the GitHub documentation, is a named list of rules that applies to a repository. These rulesets control how people can interact with selected branches and tags in a repository, such as who can push commits to a certain branch, or who can delete or rename a tag.
For each ruleset created, you can specify which branches or tags in your repository the ruleset applies to. You can use fnmatch syntax to define a pattern to target specific branches and tags. For instance, the pattern
releases/**/* could be used to target all branches in your repository whose name starts with the string
The new feature also includes an overview page that provides visibility on rules applicable to a branch, with relevant information about rule enforcement available at multiple touchpoints on GitHub.com, Git, and the GitHub CLI.
Advantages of Using Rulesets
Rulesets offer several advantages over branch and tag protection rules. Unlike protection rules, multiple rulesets can apply at the same time, ensuring that every rule targeting a branch or tag in your repository will be evaluated when someone interacts with that branch or tag.
Rulesets also have statuses, allowing you to manage which rulesets are active in a repository without needing to delete rulesets. Additionally, anyone with read access to a repository can view the active rulesets for the repository, providing transparency for developers and auditors alike.
A unique feature of rulesets is rule layering. If multiple rulesets target the same branch or tag in a repository, the rules in each of these rulesets are aggregated. If the same rule is defined in different ways across the aggregated rulesets, the most restrictive version of the rule applies. This layering also applies to protection rules targeting the same branch or tag.
Better Policy Enforcement and Consistency with Metadata Rules
Repository rules also offer benefits for GitHub Enterprise Cloud customers, who can enforce these rules across all or a subset of their repositories in an organization. This feature eliminates the need for tedious audits to check if a rule existed, allowing for consistency in one location.
In addition to branch protections, repository rules also introduce new metadata rules. These rules govern branch names, commit messages, and author email addresses of the commit to help ensure organizational standards.
For more information about GitHub Repository Rules, you can visit their official documentation.
For more updates on GitHub products and features, you can subscribe to The GitHub Insider, a newsletter for developers covering techniques, technical guides, and the latest product innovations coming from GitHub.