Skip to content

Why ghset?

GitHub template repos copy files. Not settings. Not labels. Not rulesets. Not security config. If you need to copy GitHub repository settings from one repo to another, there is no built-in way — until ghset init --from owner/repo.

Every developer who creates repos regularly hits the same wall: 20 minutes of clicking through Settings, Security, Labels, and Rulesets — for configuration they've already done on another repo.

What exists today

We researched every tool in the ecosystem. The results:

ToolStatusProblem
probot/settingsDEADFramework deprecated, unmaintained, vulnerable
github/safe-settingsDEADCrashes on rulesets (#744), ignores deleted rules (#655)
gitstrapDEADInstallation broken since 2021 — brew and curl both fail
dothubDEADLast commit 2017, leaks internal IDs into configs
google/github-repo-automationDEADOfficially DEPRECATED by Google
Terraform GitHub providerALIVERequires HCL, state management, import workflow — overkill
xfgALIVEMulti-repo file sync tool, not a settings copier

Full analysis with issue numbers and user quotes: Devlog #1 — The Graveyard.

What's missing everywhere

No living tool can do this:

bash
# Snapshot an existing repo's settings
ghset describe thumbrise/resilience > template.yml

# Create a new repo with those exact settings
ghset init my-new-repo --from template.yml

The describe direction — snapshotting a repo into a portable config — doesn't exist in any maintained tool. Everyone assumes you'll write YAML by hand.

What ghset does

FeatureghsetTerraformTemplate repos
Copy settings✅ one command✅ HCL + state
Copy security
Copy labels
Copy rulesets✅ complex
Snapshot existing repodescribe
Setup time0 (uses gh)Hours (HCL + state)0
InfrastructureNoneState file + backendNone
Learning curve2 commandsTerraform languageClick UI

Apache 2.0 · Built in public · Contributions welcome