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 repo✅ describe❌❌
Setup time0 (uses gh)Hours (HCL + state)0
InfrastructureNoneState file + backendNone
Learning curve2 commandsTerraform languageClick UI

Apache 2.0 · Built in public · Contributions welcome