Skip to content

ghfanout

ghfanout is a CLI tool that manages shared configuration files (such as .gitignore and pom.xml) in one place and fans them out to many GitHub repositories as pull requests (or direct pushes).

Edit a file once in your config repository, run one command, and every affected repository receives a pull request with the change.

  • No git clone required — target repositories are read and written purely through the GitHub Git Data API, so the tool works with nothing more than pip install
  • Kustomize-like composition — a base of shared files plus per-repository overlays, with Jinja2 templating for repository-specific values
  • Designed for microservices — made for fleets of repositories that cannot be consolidated into a monorepo

Where to start

New to ghfanout? Follow the Getting Started tutorial — it walks you through installing the tool, generating a config repository, and opening your first pull request.

Page What it covers
Getting Started Install → initbuild → authenticate → deploy, end to end
Configuration The config repository layout, ghfanout.yaml, manifest.yaml, per-branch overrides, and distribution excludes (.ghfanoutignore)
Templates Embedding repository-specific values with .tmpl files (Jinja2)
Authentication PAT and GitHub App authentication in detail
CLI Reference All commands, options, and behavior details
Development Local setup, running tests/lint/type-check, and commit conventions