diff --git a/cli/release.go b/cli/release.go index e4ac1f246e..87e4966124 100644 --- a/cli/release.go +++ b/cli/release.go @@ -321,6 +321,12 @@ func getNewReleaseType(current semver.Version, latest semver.Version) (string, e } } else if latest.Patch == current.Patch && len(latest.Pre) > 0 { desc = "pre-release" + } else if latest.Major == current.Major && + latest.Minor == current.Minor && + latest.Patch == current.Patch { + if len(current.Pre) > 0 && len(latest.Pre) == 0 { + desc = "major" + } } else { return "", fmt.Errorf("BUG: unhandled scenario: current version: %s, latest version: %s", current, latest) } diff --git a/cli/release_test.go b/cli/release_test.go index c68650e6f9..fc5b46cbad 100644 --- a/cli/release_test.go +++ b/cli/release_test.go @@ -488,6 +488,12 @@ func TestGetNewReleaseType(t *testing.T) { {"1.0.0", "1.0.3", false, "patch"}, {"1.0.0-beta29", "1.0.0-beta30", false, "pre-release"}, {"1.0.0", "1.0.3-alpha99.1b", false, "patch pre-release"}, + + {"2.0.0-rc0", "2.0.0", false, "major"}, + {"2.0.0-rc1", "2.0.0", false, "major"}, + + {"1.12.0-rc0", "1.12.0", false, "major"}, + {"1.12.0-rc5", "1.12.0", false, "major"}, } for i, d := range data {