GitTools/GitVersion

[FEATURE]: Support of '=semver: none|minor|major|patch' bump message to suppress the version increment

HHobeck opened this issue · 3 comments

Prerequisites

  • I have written a descriptive issue title
  • I have searched issues to ensure it has not already been reported

GitVersion package

GitVersion.Tool

GitVersion version

6.0.1

Operating system

Windows

What are you seeing?

[FEATURE]: Support of '=semver: none|minor|major|patch' bump message to suppress the version increment

This feature was inspired from the following discussion:

We need a new bump message format to suppress the version increment of a version calculation run. I think e.g. =semver: none|minor|major|patch bump message should be used as a default format for the following workflows:

  • GitFlow/v1
  • GitHubFlow/v1
  • TrunkBased/preview1

What is expected?

If you specify =semver: none the increment value of the e.g. branch configuration will be overruled.

Steps to Reproduce

Using the configuration:

workflow: TrunkBased/preview1
branches:
  main:
    mode: ContinuousDelivery
    increment: Patch

USE CASE 1:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two =semver: none'
  • 'message three =semver: none'

should yield to:
1.0.0-3

USE CASE 2:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one +semver: minor'
  • 'message two =semver: none'
  • 'message three =semver: none'

should yield to:
1.1.0-3

USE CASE 3:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two +semver: minor'
  • 'message three =semver: none'

should yield to:
1.1.0-2

USE CASE 4:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two =semver: none'
  • 'message three +semver: minor'

should yield to:
1.1.0-1

Using the configuration:

workflow: GitFlow/v1
branches:
  main:
    mode: ContinuousDelivery
    increment: Patch

USE CASE 5:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two =semver: none'
  • 'message three =semver: none'

should yield to:
1.0.0-3

USE CASE 6:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one +semver: minor'
  • 'message two =semver: none'
  • 'message three =semver: none'

should yield to:
1.0.0-3

USE CASE 7:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two +semver: minor'
  • 'message three =semver: none'

should yield to:
1.0.0-3

USE CASE 8:
with the following commits on main:

  • 'a commit with a tag' (tag: 1.0.0)
  • 'message one =semver: none'
  • 'message two =semver: none'
  • 'message three +semver: minor'

should yield to:
1.1.0-3

RepositoryFixture Test

No response

Output log or link to your CI build (if appropriate).

No response

This already exists, but In the configuration the default requires the +semver:none or +semver:skip because of the configuration:

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)'

I always tell people to remove the + from the front, and require it to be on a new line, to make the message a valid git trailer:

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)'

But in any case, it does suppress the version increment...

Hi Joel,

Thank you for your comment. In the previous version of git version it was possible to suppress/overrule the increment by defining bump messages when using the Mainline mode. This behavior has been changed in version 6.0.0 with the new Mainline version strategy. Now all workflows are behaving the same regarding how the bump message are interpreted.

Regards
Hardy

After some testing, I think I see what the problem is. In the latest versions, you can only increase the bump (e.g. from "None" to "Patch", "Minor" or "Breaking") but you can't decrease the bump (e.g. from "Patch" to "None").

It's treating the configured "Increment" as a minimum, instead of as a default.

I think this is a bug. My teams can't use this with that change, because it will essentially require us to switch to default of "None" and always set the version in the commit -- instead of using the default of "Patch" and only needing to set the version when we add a feature or when we don't want to increment at all (because it's just typo fixing in the documentation).