Skip to content

Instantly share code, notes, and snippets.

@ichoosetoaccept
Created December 22, 2025 18:13
Show Gist options
  • Select an option

  • Save ichoosetoaccept/652110a1da72198ce25385ed532ab616 to your computer and use it in GitHub Desktop.

Select an option

Save ichoosetoaccept/652110a1da72198ce25385ed532ab616 to your computer and use it in GitHub Desktop.
JSON Schema for git-town.toml configuration files (kebab-case)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Git Town Configuration",
"description": "JSON schema for git-town.toml configuration files",
"type": "object",
"properties": {
"branches": {
"type": "object",
"description": "Branch-related settings",
"properties": {
"main": {
"type": "string",
"description": "Name of the main branch",
"default": "main"
},
"perennials": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of perennial branch names"
},
"perennial-regex": {
"type": "string",
"description": "Regex pattern for perennial branches"
},
"feature-regex": {
"type": "string",
"description": "Regex pattern for feature branches"
},
"contribution-regex": {
"type": "string",
"description": "Regex pattern for contribution branches"
},
"observed-regex": {
"type": "string",
"description": "Regex pattern for observed branches"
},
"order": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "Branch display order",
"default": "asc"
},
"unknown-branch-type": {
"type": "string",
"description": "Default type for unknown branches",
"default": "feature"
},
"default-type": {
"type": "string",
"description": "Default branch type"
},
"display-types": {
"type": "string",
"description": "How branch types are displayed"
}
},
"additionalProperties": false
},
"create": {
"type": "object",
"description": "New branch creation settings",
"properties": {
"new-branch-type": {
"type": "string",
"description": "Default type for new branches",
"default": "feature"
},
"share-new-branches": {
"type": "string",
"enum": [
"push",
"propose",
"no"
],
"description": "How to share new branches",
"default": "propose"
},
"stash": {
"type": "boolean",
"description": "Whether to stash uncommitted changes",
"default": true
},
"push-newbranches": {
"type": "boolean",
"description": "Whether to push new branches"
}
},
"additionalProperties": false
},
"hosting": {
"type": "object",
"description": "Code hosting platform settings",
"properties": {
"forge-type": {
"type": "string",
"enum": [
"github",
"gitlab",
"gitea",
"bitbucket"
],
"description": "Type of the forge"
},
"origin-hostname": {
"type": "string",
"description": "Hostname of the origin"
},
"dev-remote": {
"type": "string",
"description": "Name of the development remote"
},
"github-connector-type": {
"type": "string",
"enum": [
"api",
"gh"
],
"description": "Type of GitHub connector"
},
"gitlab-connector-type": {
"type": "string",
"enum": [
"api",
"glab"
],
"description": "Type of GitLab connector"
},
"platform": {
"type": "string",
"description": "Deprecated, use forge-type"
}
},
"additionalProperties": false
},
"propose": {
"type": "object",
"description": "Proposal-related settings",
"properties": {
"lineage": {
"type": "string",
"enum": [
"cli",
"api"
],
"description": "Lineage setting for proposals",
"default": "cli"
}
},
"additionalProperties": false
},
"ship": {
"type": "object",
"description": "Shipping (merging to main) settings",
"properties": {
"delete-tracking-branch": {
"type": "boolean",
"description": "Whether to delete the tracking branch after shipping",
"default": true
},
"strategy": {
"type": "string",
"enum": [
"api",
"squash-merge",
"fast-forward"
],
"description": "Shipping strategy",
"default": "api"
}
},
"additionalProperties": false
},
"sync": {
"type": "object",
"description": "Branch synchronization settings",
"properties": {
"auto-sync": {
"type": "boolean",
"description": "Whether to auto-sync before commands",
"default": true
},
"detached": {
"type": "boolean",
"description": "Whether to run in detached mode",
"default": false
},
"feature-strategy": {
"type": "string",
"enum": [
"merge",
"rebase"
],
"description": "Sync strategy for feature branches",
"default": "rebase"
},
"perennial-strategy": {
"type": "string",
"enum": [
"merge",
"rebase",
"ff-only"
],
"description": "Sync strategy for perennial branches",
"default": "ff-only"
},
"prototype-strategy": {
"type": "string",
"enum": [
"merge",
"rebase",
"compress"
],
"description": "Sync strategy for prototype branches",
"default": "rebase"
},
"push-branches": {
"type": "boolean",
"description": "Whether to push branches to remote",
"default": true
},
"push-hook": {
"type": "boolean",
"description": "Whether to run pre-push Git hook",
"default": true
},
"tags": {
"type": "boolean",
"description": "Whether to sync Git tags",
"default": true
},
"upstream": {
"type": "boolean",
"description": "Whether to sync with upstream remote",
"default": true
},
"auto-resolve": {
"type": "boolean",
"description": "Whether to auto-resolve phantom conflicts"
}
},
"additionalProperties": false
},
"sync-strategy": {
"type": "object",
"description": "Granular sync strategy settings",
"properties": {
"feature-branches": {
"type": "string",
"enum": [
"merge",
"rebase"
],
"description": "Sync strategy for feature branches"
},
"perennial-branches": {
"type": "string",
"enum": [
"merge",
"rebase",
"ff-only"
],
"description": "Sync strategy for perennial branches"
},
"prototype-branches": {
"type": "string",
"enum": [
"merge",
"rebase",
"compress"
],
"description": "Sync strategy for prototype branches"
}
},
"additionalProperties": false
},
"push-newbranches": {
"type": "boolean",
"description": "Whether to push new branches"
},
"push-hook": {
"type": "boolean",
"description": "Whether to run Git's pre-push hook"
},
"ship-delete-tracking-branch": {
"type": "boolean",
"description": "Whether to delete the tracking branch after shipping"
},
"ship-strategy": {
"type": "string",
"description": "Strategy for shipping branches"
},
"sync-tags": {
"type": "boolean",
"description": "Whether to sync Git tags"
},
"sync-upstream": {
"type": "boolean",
"description": "Whether to sync with the upstream remote"
},
"create-prototype-branches": {
"type": "boolean",
"description": "Whether to create prototype branches"
}
},
"additionalProperties": false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment