diff options
author | Elan Ruusamäe <glen@delfi.ee> | 2019-09-10 14:49:19 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-09-10 14:49:19 +0000 |
commit | 634e65e98d25af90b51ba0d340d12bd90b8eeac5 (patch) | |
tree | f642470fa46a96b70c9cc0e8c791a7c11899905c | |
parent | 6a0d160f0788908b87dfb0b6eb7f9cae189cdd99 (diff) | |
download | gitlab-ce-634e65e98d25af90b51ba0d340d12bd90b8eeac5.tar.gz |
Danger: Allow fixup commits if squash enabled or MR is WIP
-rw-r--r-- | danger/commit_messages/Dangerfile | 29 |
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( |