diff --git a/pkg/config/config.go b/pkg/config/config.go index 455f384ff7f4f541d17824f39425be876ec94d0a..013fc2df893747ff7d7250bdee3880a31a7a07ff 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -179,7 +179,7 @@ func SetFlags(cmd *cobra.Command) { cmd.Flags().Bool("ghr", false, "create a .ghr file with the parameters for ghr") cmd.Flags().Bool("no-ci", false, "run semantic-release locally") cmd.Flags().Bool("dry", false, "do not create release") - cmd.Flags().Bool("allow-initial-development-versions", false, "semantic-release will start your initial development release at 0.1.0") + cmd.Flags().Bool("allow-initial-development-versions", false, "semantic-release will start your initial development release at 0.1.0 and will handle breaking changes as minor version updates. This option will be ignored if a release with major version greater than or equal 1 exists.") cmd.Flags().Bool("allow-no-changes", false, "exit with code 0 if no changes are found, useful if semantic-release is automatically run") cmd.Flags().Bool("force-bump-patch-version", false, "increments the patch version if no changes are found") cmd.Flags().Bool("prepend-changelog", false, "if the changelog file already exist the new changelog is prepended") diff --git a/pkg/semrel/semrel.go b/pkg/semrel/semrel.go index 5201469024d0016fda2e5304ba54147715ec722b..996637187fd821621b230bd4e616ab7b72d95186 100644 --- a/pkg/semrel/semrel.go +++ b/pkg/semrel/semrel.go @@ -33,6 +33,12 @@ func applyChange(rawVersion string, rawChange *Change, allowInitialDevelopmentVe change.Major = true } + // never allow major version changed if allowInitialDevelopmentVersions is set + if allowInitialDevelopmentVersions && version.Major() == 0 && change.Major { + change.Major = false + change.Minor = true + } + if allowInitialDevelopmentVersions && version.Major() == 0 && version.Minor() == 0 { change.Minor = true } diff --git a/pkg/semrel/semrel_test.go b/pkg/semrel/semrel_test.go index dc1e247ef3026d201fa5b06b42d7bbca186380ea..e35480113db8611d177a8515ae48130e8241dc6e 100644 --- a/pkg/semrel/semrel_test.go +++ b/pkg/semrel/semrel_test.go @@ -50,7 +50,7 @@ func TestApplyChange(t *testing.T) { {"0.0.0", NoChange, "0.1.0", true, false}, {"0.0.0", PatchChange, "0.1.0", true, false}, {"0.0.0", MinorChange, "0.1.0", true, false}, - {"0.0.0", MajorChange, "1.0.0", true, false}, + {"0.0.0", MajorChange, "0.1.0", true, false}, {"1.0.0", NoChange, "", false, false}, {"1.0.0", NoChange, "1.0.1", false, true}, @@ -63,6 +63,11 @@ func TestApplyChange(t *testing.T) { {"2.0.0-beta", MajorChange, "2.0.0-beta.1", false, false}, {"2.0.0-beta.2", MajorChange, "2.0.0-beta.3", false, false}, {"2.0.0-beta.1.1", MajorChange, "2.0.0-beta.2", false, false}, + + {"0.1.0", MajorChange, "0.2.0", true, false}, + {"1.0.0", MajorChange, "2.0.0", true, false}, + {"0.1.0", MinorChange, "0.2.0", true, false}, + {"0.1.0", NoChange, "0.1.1", true, true}, } for _, tc := range testCases {