Browse Source

CI: Add a check to report git merge commit

Lucas CHOLLET 2 years ago
parent
commit
839c1a574d
2 changed files with 9 additions and 0 deletions
  1. 4 0
      .github/workflows/lintcommits.yml
  2. 5 0
      Meta/lint-commit.sh

+ 4 - 0
.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)",

+ 5 - 0
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)"