summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElan Ruusamäe <glen@delfi.ee>2019-09-10 14:49:19 +0000
committerNick Thomas <nick@gitlab.com>2019-09-10 14:49:19 +0000
commit634e65e98d25af90b51ba0d340d12bd90b8eeac5 (patch)
treef642470fa46a96b70c9cc0e8c791a7c11899905c
parent6a0d160f0788908b87dfb0b6eb7f9cae189cdd99 (diff)
downloadgitlab-ce-634e65e98d25af90b51ba0d340d12bd90b8eeac5.tar.gz
Danger: Allow fixup commits if squash enabled or MR is WIP
-rw-r--r--danger/commit_messages/Dangerfile29
1 files changed, 28 insertions, 1 deletions
diff --git a/danger/commit_messages/Dangerfile b/danger/commit_messages/Dangerfile
index 0c675cc4c9c..d371ade4887 100644
--- a/danger/commit_messages/Dangerfile
+++ b/danger/commit_messages/Dangerfile
@@ -88,9 +88,36 @@ def lint_commit(commit) # rubocop:disable Metrics/AbcSize
# We ignore revert commits as they are well structured by Git already
return false if commit.message.start_with?('Revert "')
+ is_squash = gitlab.mr_json['squash']
+ is_wip = gitlab.mr_json['work_in_progress']
+ is_fixup = commit.message.start_with?('fixup!', 'squash!')
+
+ if is_fixup
+ # The MR is set to squash - Danger adds an informative notice
+ # The MR is not set to squash - Danger fails. if also WIP warn only, not error
+ if is_squash
+ return false
+ end
+
+ if is_wip
+ warn_commit(
+ commit,
+ 'Squash or Fixup commits must be squashed before merge, or enable squash merge option'
+ )
+ else
+ fail_commit(
+ commit,
+ 'Squash or Fixup commits must be squashed before merge, or enable squash merge option'
+ )
+ end
+
+ # Makes no sense to process other rules for fixup commits, they trigger just more noise
+ return false
+ end
+
# Fail if a suggestion commit is used and squash is not enabled
if commit.message.start_with?('Apply suggestion to')
- if gitlab.mr_json['squash']
+ if is_squash
return false
else
fail_commit(