diff --git a/.github/workflows/lintcommits.yml b/.github/workflows/lintcommits.yml index 7263eef04c..14d65ad89e 100644 --- a/.github/workflows/lintcommits.yml +++ b/.github/workflows/lintcommits.yml @@ -28,6 +28,10 @@ jobs: pattern: /^.{0,72}(?:\r?\n(?:(.{0,72})|(.*?([a-z]+:\/\/)?(([a-zA-Z0-9_]|-)+\.)+[a-z]{2,}(:\d+)?([a-zA-Z_0-9@:%\+.~\?&/=]|-)+).*?))*$/, error: "Commit message lines are too long (maximum allowed is 72 characters, except for URLs)", }, + { + pattern: /^Merge branch/, + error: "Commit is a git merge commit, use the rebase command instead", + }, { pattern: /^\S.*?\S: .+/, error: "Missing category in commit title (if this is a fix up of a previous commit, it should be squashed)", diff --git a/Meta/lint-commit.sh b/Meta/lint-commit.sh index 5e04e11c64..878e87c8a4 100755 --- a/Meta/lint-commit.sh +++ b/Meta/lint-commit.sh @@ -34,6 +34,11 @@ while read -r line; do error "Empty line between commit title and body is missing" fi + merge_commit_pattern="^Merge branch" + if [[ $line_number -eq 1 ]] && (echo "$line" | grep -E -q "$merge_commit_pattern"); then + error "Commit is a git merge commit, use the rebase command instead" + fi + category_pattern='^(Revert "|\S+: )' if [[ $line_number -eq 1 ]] && (echo "$line" | grep -E -v -q "$category_pattern"); then error "Missing category in commit title (if this is a fix up of a previous commit, it should be squashed)"