diff --git a/CHANGELOG.md b/CHANGELOG.md index 506f59c..40298ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +v2.0.4: + - Added a new commit message to be validated for merge from master to the branch (@artus.andermann) + v2.0.3: - Fix IsValidMessage method adding a new exception for merge from master to the branch (@esequiel.virtuoso) diff --git a/src/commit-message/commit_message_manager.go b/src/commit-message/commit_message_manager.go index 5c679f8..221ed99 100644 --- a/src/commit-message/commit_message_manager.go +++ b/src/commit-message/commit_message_manager.go @@ -3,6 +3,7 @@ package commitmessage import ( "errors" "fmt" + "regexp" "strings" ) @@ -78,17 +79,34 @@ func (f *CommitMessage) PrettifyCommitMessage(commitMessage string) (string, err func isMergeMasterToBranch(message string) bool { splitedMessage := strings.Split(strings.ToLower(message), "\n") + mergePatterns := []string{ + "'origin/master' into", + "merge branches 'master' into", + "merge branch 'master' into", + "merge branch 'master' of", + "'origin/main' into", + "merge branch 'main' into", + "merge branch 'main' of", + } + + mergeRegexPattern := `merge branches '.*' and 'master' of` + re := regexp.MustCompile(mergeRegexPattern) + for _, row := range splitedMessage { lowerRow := strings.ToLower(row) - if strings.Contains(lowerRow, "'origin/master' into") || - strings.Contains(lowerRow, "merge branch 'master' into") || - strings.Contains(lowerRow, "merge branch 'master' of") || - strings.Contains(lowerRow, "'origin/main' into") || - strings.Contains(lowerRow, "merge branch 'main' into") || - strings.Contains(lowerRow, "merge branch 'main' of") { + + found := re.MatchString(lowerRow) + if found { return true } + + for _, pattern := range mergePatterns { + if strings.Contains(lowerRow, pattern) { + return true + } + } } + return false } diff --git a/src/commit-message/commit_message_manager_test.go b/src/commit-message/commit_message_manager_test.go index 6090fbe..f1e608c 100644 --- a/src/commit-message/commit_message_manager_test.go +++ b/src/commit-message/commit_message_manager_test.go @@ -59,6 +59,10 @@ func TestIsValidMessageSuccess(t *testing.T) { actual := f.commitMessageManager.IsValidMessage(message) tests.AssertTrue(t, actual) + message = "Merge branches 'sample-branch' and 'master' of ssh://gitlab.lalala/j/dv into sample-branch" + actual = f.commitMessageManager.IsValidMessage(message) + tests.AssertTrue(t, actual) + message = "feat(scope): This is a message" actual = f.commitMessageManager.IsValidMessage(message) tests.AssertTrue(t, actual)