Commit 85af3e82 authored by Douwe Maan's avatar Douwe Maan

Add option to disable code diffs to EmailOnPush.

See #1950
parent e0c186c3
...@@ -46,7 +46,7 @@ class Admin::ServicesController < Admin::ApplicationController ...@@ -46,7 +46,7 @@ class Admin::ServicesController < Admin::ApplicationController
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password, :user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
:build_key, :server, :teamcity_url, :build_type, :build_key, :server, :teamcity_url, :build_type,
:description, :issues_url, :new_issue_url, :restrict_to_branch, :description, :issues_url, :new_issue_url, :restrict_to_branch,
:send_from_committer_email :send_from_committer_email, :disable_diffs
]) ])
end end
end end
...@@ -51,7 +51,7 @@ class Projects::ServicesController < Projects::ApplicationController ...@@ -51,7 +51,7 @@ class Projects::ServicesController < Projects::ApplicationController
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password, :user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
:build_key, :server, :teamcity_url, :build_type, :build_key, :server, :teamcity_url, :build_type,
:description, :issues_url, :new_issue_url, :restrict_to_branch, :description, :issues_url, :new_issue_url, :restrict_to_branch,
:send_from_committer_email :send_from_committer_email, :disable_diffs
) )
end end
end end
...@@ -16,13 +16,14 @@ module Emails ...@@ -16,13 +16,14 @@ module Emails
subject: subject("Project was moved")) subject: subject("Project was moved"))
end end
def repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email = false) def repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email = false, disable_diffs = false)
@project = Project.find(project_id) @project = Project.find(project_id)
@author = User.find(author_id) @author = User.find(author_id)
@compare = compare @compare = compare
@commits = Commit.decorate(compare.commits) @commits = Commit.decorate(compare.commits)
@diffs = compare.diffs @diffs = compare.diffs
@branch = branch.gsub("refs/heads/", "") @branch = branch.gsub("refs/heads/", "")
@disable_diffs = disable_diffs
@subject = "[#{@project.path_with_namespace}][#{@branch}] " @subject = "[#{@project.path_with_namespace}][#{@branch}] "
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
class EmailsOnPushService < Service class EmailsOnPushService < Service
prop_accessor :send_from_committer_email prop_accessor :send_from_committer_email
prop_accessor :disable_diffs
prop_accessor :recipients prop_accessor :recipients
validates :recipients, presence: true, if: :activated? validates :recipients, presence: true, if: :activated?
...@@ -34,13 +35,18 @@ class EmailsOnPushService < Service ...@@ -34,13 +35,18 @@ class EmailsOnPushService < Service
self.send_from_committer_email == "1" self.send_from_committer_email == "1"
end end
def disable_diffs?
self.disable_diffs == "1"
end
def execute(push_data) def execute(push_data)
EmailsOnPushWorker.perform_async(project_id, recipients, push_data, self.send_from_committer_email?) EmailsOnPushWorker.perform_async(project_id, recipients, push_data, send_from_committer_email?, disable_diffs?)
end end
def fields def fields
[ [
{ type: 'checkbox', name: 'send_from_committer_email', title: "Send from committer email if domain matches" }, { type: 'checkbox', name: 'send_from_committer_email', title: "Send from committer email if domain matches" },
{ type: 'checkbox', name: 'disable_diffs', title: "Disable code diffs" },
{ type: 'textarea', name: 'recipients', placeholder: 'Emails separated by whitespace' }, { type: 'textarea', name: 'recipients', placeholder: 'Emails separated by whitespace' },
] ]
end end
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
%ul %ul
- @diffs.each_with_index do |diff, i| - @diffs.each_with_index do |diff, i|
%li.file-stats %li.file-stats
%a{href: "#diff-#{i}"} %a{href: "#{@target_url if @disable_diffs}#diff-#{i}" }
- if diff.deleted_file - if diff.deleted_file
%span.deleted-file %span.deleted-file
&minus; &minus;
...@@ -32,27 +32,28 @@ ...@@ -32,27 +32,28 @@
- else - else
= diff.new_path = diff.new_path
%h4 Changes: - unless @disable_diffs
- @diffs.each_with_index do |diff, i| %h4 Changes:
%li{id: "diff-#{i}"} - @diffs.each_with_index do |diff, i|
%a{href: @target_url + "#diff-#{i}"} %li{id: "diff-#{i}"}
- if diff.deleted_file %a{href: @target_url + "#diff-#{i}"}
%strong - if diff.deleted_file
= diff.old_path %strong
deleted = diff.old_path
- elsif diff.renamed_file deleted
%strong - elsif diff.renamed_file
= diff.old_path %strong
&rarr; = diff.old_path
%strong &rarr;
= diff.new_path %strong
- else = diff.new_path
%strong - else
= diff.new_path %strong
%hr = diff.new_path
%pre %hr
= color_email_diff(diff.diff) %pre
%br = color_email_diff(diff.diff)
%br
- if @compare.timeout - if @compare.timeout
%h5 Huge diff. To prevent performance issues changes are hidden %h5 Huge diff. To prevent performance issues changes are hidden
...@@ -19,20 +19,22 @@ Commits: ...@@ -19,20 +19,22 @@ Commits:
\- + #{diff.new_path} \- + #{diff.new_path}
- else - else
\- #{diff.new_path} \- #{diff.new_path}
\ - unless @disable_diffs
\
Changes:
- @diffs.each do |diff|
\ \
\===================================== \
- if diff.deleted_file Changes:
#{diff.old_path} deleted - @diffs.each do |diff|
- elsif diff.renamed_file \
#{diff.old_path}#{diff.new_path} \=====================================
- else - if diff.deleted_file
= diff.new_path #{diff.old_path} deleted
\===================================== - elsif diff.renamed_file
!= diff.diff #{diff.old_path}#{diff.new_path}
\ - else
= diff.new_path
\=====================================
!= diff.diff
- if @compare.timeout - if @compare.timeout
\
\
Huge diff. To prevent performance issues it was hidden Huge diff. To prevent performance issues it was hidden
class EmailsOnPushWorker class EmailsOnPushWorker
include Sidekiq::Worker include Sidekiq::Worker
def perform(project_id, recipients, push_data, send_from_committer_email = false) def perform(project_id, recipients, push_data, send_from_committer_email = false, disable_diffs = false)
project = Project.find(project_id) project = Project.find(project_id)
before_sha = push_data["before"] before_sha = push_data["before"]
after_sha = push_data["after"] after_sha = push_data["after"]
...@@ -19,7 +19,15 @@ class EmailsOnPushWorker ...@@ -19,7 +19,15 @@ class EmailsOnPushWorker
return false unless compare && compare.commits.present? return false unless compare && compare.commits.present?
recipients.split(" ").each do |recipient| recipients.split(" ").each do |recipient|
Notify.repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email).deliver Notify.repository_push_email(
project_id,
recipient,
author_id,
branch,
compare,
send_from_committer_email,
disable_diffs
).deliver
end end
ensure ensure
compare = nil compare = nil
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment