<commit_before># Configuration
GitVersion 3.0 is mainly powered by configuration and no longer has branching
strategies hard coded.

## Configuration tool
If you run `GitVersion init` you will be launched into a configuration tool, it
can help you configure GitVersion the way you want it.

Once complete, the `init` command will create a `GitVersion.yml` file in the
working directory. It can be the root repository directory or any subdirectory
in case you have a single repository for more than one project or are restricted
to commit into a subdirectory.

**Note:** GitVersion ships with internal default configuration which works with
GitHubFlow and GitFlow, probably with others too.

The *develop* branch is set to `ContinuousDeployment` mode by default as we have
found that is generally what is needed when using GitFlow.

You can run `GitVersion /showConfig` to see the effective configuration
(defaults + overrides).

To create your config file just type `GitVersion init` in your repo directory
after installing via chocolatey and a minimal `GitVersion.yml` configuration
file will be created. Modify this as you need.

## Global configuration
The global configuration look like this:

```yaml
next-version: 1.0
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
mode: ContinuousDelivery
increment: Inherit
continuous-delivery-fallback-tag: ci
tag-prefix: '[vV]'
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
commit-date-format: 'yyyy-MM-dd'
ignore:
  sha: []
  commits-before: yyyy-MM-ddTHH:mm:ss
```

And the description of the available options are:

### next-version
Allows you to bump the next version explicitly, useful for bumping `master` or a
feature with breaking changes a major increment.

### assembly-versioning-scheme
When updating assembly info, `assembly-versioning-scheme` tells GitVersion how
to treat the `AssemblyVersion` attribute. Useful to lock the major when using
Strong Naming. Note: you can use `None` to skip updating the `AssemblyVersion`
while still updating the `AssemblyFileVersion` and `AssemblyInformationVersion`
attributes. Valid values: `MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`,
`Major`, `None`.

### assembly-file-versioning-scheme
When updating assembly info, `assembly-file-versioning-scheme` tells GitVersion how
to treat the `AssemblyFileVersion` attribute. Note: you can use `None` to skip updating the `AssemblyFileVersion`
while still updating the `AssemblyVersion` and `AssemblyInformationVersion`
attributes. Valid values: `MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`,
`Major`, `None`.

### assembly-file-versioning-format
Set this to any of the available [variables](/more-info/variables) in combination (but not necessary) with
a process scoped environment variable. It overwrites the value of `assembly-file-versioning-scheme`. To reference
an environment variable, use `env:`
Example Syntax #1: `'{Major}.{Minor}.{Patch}.{env:JENKINS_BUILD_NUMBER ?? fallback_string}'`. Uses `JENKINS_BUILD_NUMBER`
if available in the environment otherwise the `fallback_string`
Example Syntax #2: `'{Major}.{Minor}.{Patch}.{env:JENKINS_BUILD_NUMBER}'`.  Uses `JENKINS_BUILD_NUMBER`
if available in the environment otherwise the parsing fails.
String interpolation is supported as in `assembly-informational-format`

### assembly-versioning-format
Follows the same semantics as `assembly-file-versioning-format` and overwrites the value of `assembly-versioning-scheme`.

### assembly-informational-format
Set this to any of the available [variables](/more-info/variables) to change the
value of the `AssemblyInformationalVersion` attribute. Default set to
`{InformationalVersion}`. It also supports string interpolation
(`{MajorMinorPatch}+{BranchName}`)

### mode
Sets the `mode` of how GitVersion should create a new version. Read more at
[versioning mode](/reference/versioning-mode.md).

### increment
The part of the SemVer to increment when GitVersion detects it needs to be increased, such as for commits after a tag: `Major`, `Minor`, `Patch`, `None`.

The special value `Inherit` means that GitVersion should find the parent branch (i.e. the branch where the current branch was branched from), and use its values for [increment](#increment), [prevent-increment-of-merged-branch-version](#prevent-increment-of-merged-branch-version) and [is-develop](#is-develop).

### continuous-delivery-fallback-tag
When using `mode: ContinuousDeployment`, the value specified in
`continuous-delivery-fallback-tag` will be used as the pre-release tag for
branches which do not have one specified. Default set to `ci`.

### tag-prefix
A regex which is used to trim git tags before processing (eg v1.0.0). Default is
`[vV]` though this is just for illustrative purposes as we do a IgnoreCase match
and could be `v`.

### major-version-bump-message
The regex to match commit messages with to perform a major version increment.
Default set to `'\+semver:\s?(breaking|major)'`, which will match occurrences of
`+semver: major` and `+semver: breaking` in a commit message.

### minor-version-bump-message
The regex to match commit messages with to perform a minor version increment.
Default set to `'\+semver:\s?(feature|minor)'`, which will match occurrences of
`+semver: feature` and `+semver: minor` in a commit message.

### patch-version-bump-message
The regex to match commit messages with to perform a patch version increment.
Default set to `'\+semver:\s?(fix|patch)'`, which will match occurrences of
`+semver: fix` and `+semver: patch` in a commit message.

### no-bump-message
Used to tell GitVersion not to increment when in Mainline development mode.
Default `\+semver:\s?(none|skip)`, which will match occurrences of `+semver:
none` and `+semver: skip`
<commit_msg>Update doc (`is-develop` is obsolete)<commit_after># Configuration
GitVersion 3.0 is mainly powered by configuration and no longer has branching
strategies hard coded.

## Configuration tool
If you run `GitVersion init` you will be launched into a configuration tool, it
can help you configure GitVersion the way you want it.

Once complete, the `init` command will create a `GitVersion.yml` file in the
working directory. It can be the root repository directory or any subdirectory
in case you have a single repository for more than one project or are restricted
to commit into a subdirectory.

**Note:** GitVersion ships with internal default configuration which works with
GitHubFlow and GitFlow, probably with others too.

The *develop* branch is set to `ContinuousDeployment` mode by default as we have
found that is generally what is needed when using GitFlow.

You can run `GitVersion /showConfig` to see the effective configuration
(defaults + overrides).

To create your config file just type `GitVersion init` in your repo directory
after installing via chocolatey and a minimal `GitVersion.yml` configuration
file will be created. Modify this as you need.

## Global configuration
The global configuration look like this:

```yaml
next-version: 1.0
assembly-versioning-scheme: MajorMinorPatch
assembly-file-versioning-scheme: MajorMinorPatchTag
assembly-informational-format: '{InformationalVersion}'
mode: ContinuousDelivery
increment: Inherit
continuous-delivery-fallback-tag: ci
tag-prefix: '[vV]'
major-version-bump-message: '\+semver:\s?(breaking|major)'
minor-version-bump-message: '\+semver:\s?(feature|minor)'
patch-version-bump-message: '\+semver:\s?(fix|patch)'
no-bump-message: '\+semver:\s?(none|skip)'
legacy-semver-padding: 4
build-metadata-padding: 4
commits-since-version-source-padding: 4
commit-message-incrementing: Enabled
commit-date-format: 'yyyy-MM-dd'
ignore:
  sha: []
  commits-before: yyyy-MM-ddTHH:mm:ss
```

And the description of the available options are:

### next-version
Allows you to bump the next version explicitly, useful for bumping `master` or a
feature with breaking changes a major increment.

### assembly-versioning-scheme
When updating assembly info, `assembly-versioning-scheme` tells GitVersion how
to treat the `AssemblyVersion` attribute. Useful to lock the major when using
Strong Naming. Note: you can use `None` to skip updating the `AssemblyVersion`
while still updating the `AssemblyFileVersion` and `AssemblyInformationVersion`
attributes. Valid values: `MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`,
`Major`, `None`.

### assembly-file-versioning-scheme
When updating assembly info, `assembly-file-versioning-scheme` tells GitVersion how
to treat the `AssemblyFileVersion` attribute. Note: you can use `None` to skip updating the `AssemblyFileVersion`
while still updating the `AssemblyVersion` and `AssemblyInformationVersion`
attributes. Valid values: `MajorMinorPatchTag`, `MajorMinorPatch`, `MajorMinor`,
`Major`, `None`.

### assembly-file-versioning-format
Set this to any of the available [variables](/more-info/variables) in combination (but not necessary) with
a process scoped environment variable. It overwrites the value of `assembly-file-versioning-scheme`. To reference
an environment variable, use `env:`
Example Syntax #1: `'{Major}.{Minor}.{Patch}.{env:JENKINS_BUILD_NUMBER ?? fallback_string}'`. Uses `JENKINS_BUILD_NUMBER`
if available in the environment otherwise the `fallback_string`
Example Syntax #2: `'{Major}.{Minor}.{Patch}.{env:JENKINS_BUILD_NUMBER}'`.  Uses `JENKINS_BUILD_NUMBER`
if available in the environment otherwise the parsing fails.
String interpolation is supported as in `assembly-informational-format`

### assembly-versioning-format
Follows the same semantics as `assembly-file-versioning-format` and overwrites the value of `assembly-versioning-scheme`.

### assembly-informational-format
Set this to any of the available [variables](/more-info/variables) to change the
value of the `AssemblyInformationalVersion` attribute. Default set to
`{InformationalVersion}`. It also supports string interpolation
(`{MajorMinorPatch}+{BranchName}`)

### mode
Sets the `mode` of how GitVersion should create a new version. Read more at
[versioning mode](/reference/versioning-mode.md).

### increment
The part of the SemVer to increment when GitVersion detects it needs to be increased, such as for commits after a tag: `Major`, `Minor`, `Patch`, `None`.

The special value `Inherit` means that GitVersion should find the parent branch (i.e. the branch where the current branch was branched from), and use its values for [increment](#increment), [prevent-increment-of-merged-branch-version](#prevent-increment-of-merged-branch-version) and [tracks-release-branches](#tracks-release-branches).

### continuous-delivery-fallback-tag
When using `mode: ContinuousDeployment`, the value specified in
`continuous-delivery-fallback-tag` will be used as the pre-release tag for
branches which do not have one specified. Default set to `ci`.

### tag-prefix
A regex which is used to trim git tags before processing (eg v1.0.0). Default is
`[vV]` though this is just for illustrative purposes as we do a IgnoreCase match
and could be `v`.

### major-version-bump-message
The regex to match commit messages with to perform a major version increment.
Default set to `'\+semver:\s?(breaking|major)'`, which will match occurrences of
`+semver: major` and `+semver: breaking` in a commit message.

### minor-version-bump-message
The regex to match commit messages with to perform a minor version increment.
Default set to `'\+semver:\s?(feature|minor)'`, which will match occurrences of
`+semver: feature` and `+semver: minor` in a commit message.

### patch-version-bump-message
The regex to match commit messages with to perform a patch version increment.
Default set to `'\+semver:\s?(fix|patch)'`, which will match occurrences of
`+semver: fix` and `+semver: patch` in a commit message.

### no-bump-message
Used to tell GitVersion not to increment when in Mainline development mode.
Default `\+semver:\s?(none|skip)`, which will match occurrences of `+semver:
none` and `+semver: skip`

{'fraction_non_alphanumeric': 0.09751542708671647, 'fraction_numerical': 0.001948684637869438, 'mean_word_length': 5.579594017094017, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3179271', 'n_tokens_mistral': 3502, 'n_tokens_neox': 3380, 'n_words': 1410}