Skip to main content

Sync Rulesets

Manage one default-branch ruleset from nova.config.json.

Summary

The sync-rulesets recipe looks up the repository ruleset named Nova default branch. It creates that ruleset when missing or replaces its desired rules when present, targeting GitHub's ~DEFAULT_BRANCH selector.

Nova does not edit or delete any other repository or organization ruleset. Review GitHub's ruleset availability and precedence before enabling enforcement.

Why Use This Command?

  1. Recreate default-branch protection without clicking through GitHub settings.
  2. Keep pull-request, review, and status-check requirements together as one policy.
  3. Avoid claiming rulesets that Nova did not create.

Requirements

  • gh CLI ≥ 2.40.0 — The GitHub CLI must be installed and authenticated.
  • Repository administration access — The authenticated user must be able to manage rulesets.
  • A GitHub plan that supports the selected rules — GitHub may reject unavailable enforcement modes or rule types.
  • github.owner and github.repo — Both fields identify the target repository.

Behavior

FieldType or valuesWhat it controls
enforcementactive, disabled, evaluateWhether the managed ruleset is enforced.
blockDeletionsbooleanBlocks deletion of the default branch.
blockForcePushesbooleanBlocks non-fast-forward pushes.
requireLinearHistorybooleanRequires a linear commit history.
requireSignedCommitsbooleanRequires signed commits.
requirePullRequestbooleanRequires changes to enter through a pull request.
allowedMergeMethodsmerge, squash, rebase arrayMerge methods accepted by the pull-request rule.
dismissStaleReviewsbooleanDismisses approvals after new commits.
requireCodeOwnerReviewbooleanRequires approval from a code owner.
requireLastPushApprovalbooleanRequires someone other than the last pusher to approve.
requiredApprovalsinteger 010Number of approving reviews required.
requireConversationResolutionbooleanRequires review threads to be resolved.
requiredStatusChecksstring[]Status-check context names required before merging.
requireBranchesToBeUpToDatebooleanRequires the branch to be current before required checks may pass merge.

Nova rejects combinations GitHub cannot interpret:

  • requirePullRequest: true requires at least one allowedMergeMethods value.
  • Pull-request review fields require requirePullRequest: true.
  • requireBranchesToBeUpToDate: true requires at least one requiredStatusChecks value.
  • At least one protection rule must be enabled.

Use enforcement: "disabled" to create or maintain the policy without enforcing it. Removing the config does not delete the managed ruleset; Nova only mutates it when github.rulesets.defaultBranch is present.

Settings

json
{
  "github": {
    "rulesets": {
      "defaultBranch": {
        "enforcement": "active",
        "blockDeletions": true,
        "blockForcePushes": true,
        "requireLinearHistory": false,
        "requireSignedCommits": true,
        "requirePullRequest": true,
        "allowedMergeMethods": ["squash", "rebase"],
        "dismissStaleReviews": true,
        "requireCodeOwnerReview": false,
        "requireLastPushApproval": true,
        "requiredApprovals": 1,
        "requireConversationResolution": true,
        "requiredStatusChecks": ["check", "build"],
        "requireBranchesToBeUpToDate": true
      }
    }
  },
  "recipes": {
    "github": {
      "sync-rulesets": {
        "enabled": true
      }
    }
  }
}

Usage

Options

FlagDescription
-d, --dry-runRun read-only checks without changing any GitHub settings.