# Configuration Reference This document provides a comprehensive reference for all git-flow-next configuration options. All configuration is stored in Git configuration using the `gitflow.*` key namespace. ## Configuration Overview git-flow-next uses a hierarchical configuration system with **three levels of precedence**: 1. **Branch Type Configuration** (`gitflow.branch.*`) - Default behavior for branch types 2. **Command-Specific Overrides** (`gitflow..*`) - Override defaults for specific commands 3. **Command-Line Arguments** - **Highest priority** - always override configuration ## Core System Configuration ### System Settings | Key | Description | Default | Example | |-----|-------------|---------|---------| | `gitflow.version` | Internal version marker for compatibility | `1.0` | `1.0` | | `gitflow.initialized` | Marks repository as git-flow initialized | `false` | `true` | | `gitflow.origin` | Remote name to use for operations | `origin` | `upstream` | | `gitflow.remote` | Alias for `gitflow.origin` | `origin` | `upstream` | ## Branch Type Configuration Branch type configuration defines the default behavior for each branch type using the pattern: `gitflow.branch..` ### Universal Branch Properties All branch types (both base and topic) support these properties: | Property | Description | Values | Default | |----------|-------------|--------|---------| | `type` | Branch type classification | `base`, `topic` | Required | | `parent` | Parent branch for this branch type | Branch name | Varies by type | | `startPoint` | Default branch to start from | Branch name | Same as parent | | `upstreamStrategy` | Strategy when merging TO parent | `merge`, `rebase`, `squash` | `merge` | | `downstreamStrategy` | Strategy when updating FROM parent | `merge`, `rebase` | `merge` | | `autoUpdate` | Auto-update from parent on finish | `true`, `false` | `false` | ### Topic Branch Additional Properties Topic branches support additional properties: | Property | Description | Values | Default | |----------|-------------|--------|---------| | `prefix` | Branch name prefix | String ending in `/` | `/` | | `tag` | Create tags on finish | `true`, `false` | `false` | | `tagprefix` | Prefix for created tags | String | `""` | | `deleteRemote` | Delete remote branch by default | `true`, `false` | `false` | ### Default Branch Types #### Base Branches ```bash # Main branch (production releases) gitflow.branch.main.type=base gitflow.branch.main.parent= # No parent (root) gitflow.branch.main.upstreamStrategy=merge gitflow.branch.main.downstreamStrategy=merge gitflow.branch.main.autoUpdate=false # Develop branch (integration) gitflow.branch.develop.type=base gitflow.branch.develop.parent=main gitflow.branch.develop.startPoint=main gitflow.branch.develop.upstreamStrategy=merge gitflow.branch.develop.downstreamStrategy=merge gitflow.branch.develop.autoUpdate=true # Auto-updates from main ``` #### Topic Branches ```bash # Feature branches gitflow.branch.feature.type=topic gitflow.branch.feature.parent=develop gitflow.branch.feature.startPoint=develop gitflow.branch.feature.prefix=feature/ gitflow.branch.feature.upstreamStrategy=merge gitflow.branch.feature.downstreamStrategy=rebase gitflow.branch.feature.tag=false gitflow.branch.feature.autoUpdate=false # Release branches gitflow.branch.release.type=topic gitflow.branch.release.parent=main gitflow.branch.release.startPoint=develop gitflow.branch.release.prefix=release/ gitflow.branch.release.upstreamStrategy=merge gitflow.branch.release.downstreamStrategy=merge gitflow.branch.release.tag=true gitflow.branch.release.tagprefix=v gitflow.branch.release.autoUpdate=false # Hotfix branches gitflow.branch.hotfix.type=topic gitflow.branch.hotfix.parent=main gitflow.branch.hotfix.startPoint=main gitflow.branch.hotfix.prefix=hotfix/ gitflow.branch.hotfix.upstreamStrategy=merge gitflow.branch.hotfix.downstreamStrategy=merge gitflow.branch.hotfix.tag=true gitflow.branch.hotfix.tagprefix=v gitflow.branch.hotfix.autoUpdate=false ``` #### Custom Branch Types You can define custom branch types by setting the appropriate configuration: ```bash # Example: Support branches gitflow.branch.support.type=topic gitflow.branch.support.parent=main gitflow.branch.support.startPoint=main gitflow.branch.support.prefix=support/ gitflow.branch.support.tag=true gitflow.branch.support.tagprefix=support- ``` ## Command-Specific Configuration Command-specific configuration overrides branch defaults using the pattern: `gitflow...