Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIzaak Alpert <ihalpert@blackberry.com>2013-04-25 18:15:33 +0400
committerIzaak Alpert <ialpert@blackberry.com>2013-07-18 06:41:30 +0400
commit3d7194f0112da12e8732df9ffe8b34fe7d0a9f6b (patch)
tree9b3c68c04b5ead5e35456595a07453b036b2dbc8 /app/mailers
parentfd033671933fcc0f472480d98c907aefde357416 (diff)
Merge Request on forked projects
The good: - You can do a merge request for a forked commit and it will merge properly (i.e. it does work). - Push events take into account merge requests on forked projects - Tests around merge_actions now present, spinach, and other rspec tests - Satellites now clean themselves up rather then recreate The questionable: - Events only know about target projects - Project's merge requests only hold on to MR's where they are the target - All operations performed in the satellite The bad: - Duplication between project's repositories and satellites (e.g. commits_between) (for reference: http://feedback.gitlab.com/forums/176466-general/suggestions/3456722-merge-requests-between-projects-repos) Fixes: Make test repos/satellites only create when needed -Spinach/Rspec now only initialize test directory, and setup stubs (things that are relatively cheap) -project_with_code, source_project_with_code, and target_project_with_code now create/destroy their repos individually -fixed remote removal -How to merge renders properly -Update emails to show project/branches -Edit MR doesn't set target branch -Fix some failures on editing/creating merge requests, added a test -Added back a test around merge request observer -Clean up project_transfer_spec, Remove duplicate enable/disable observers -Ensure satellite lock files are cleaned up, Attempted to add some testing around these as well -Signifant speed ups for tests -Update formatting ordering in notes_on_merge_requests -Remove wiki schema update Fixes for search/search results -Search results was using by_project for a list of projects, updated this to use in_projects -updated search results to reference the correct (target) project -udpated search results to print both sides of the merge request Change-Id: I19407990a0950945cc95d62089cbcc6262dab1a8
Diffstat (limited to 'app/mailers')
-rw-r--r--app/mailers/emails/merge_requests.rb47
1 files changed, 42 insertions, 5 deletions
diff --git a/app/mailers/emails/merge_requests.rb b/app/mailers/emails/merge_requests.rb
index de47903c0d4..3dc3ddc3efd 100644
--- a/app/mailers/emails/merge_requests.rb
+++ b/app/mailers/emails/merge_requests.rb
@@ -2,28 +2,65 @@ module Emails
module MergeRequests
def new_merge_request_email(recipient_id, merge_request_id)
@merge_request = MergeRequest.find(merge_request_id)
- @project = @merge_request.project
- mail(to: recipient(recipient_id), subject: subject("new merge request !#{@merge_request.id}", @merge_request.title))
+ mail(to: @merge_request.assignee_email, subject: subject("new merge request !#{@merge_request.id}", @merge_request.title))
end
def reassigned_merge_request_email(recipient_id, merge_request_id, previous_assignee_id)
@merge_request = MergeRequest.find(merge_request_id)
@previous_assignee = User.find_by_id(previous_assignee_id) if previous_assignee_id
- @project = @merge_request.project
mail(to: recipient(recipient_id), subject: subject("changed merge request !#{@merge_request.id}", @merge_request.title))
end
def closed_merge_request_email(recipient_id, merge_request_id, updated_by_user_id)
@merge_request = MergeRequest.find(merge_request_id)
- @project = @merge_request.project
@updated_by = User.find updated_by_user_id
mail(to: recipient(recipient_id), subject: subject("Closed merge request !#{@merge_request.id}", @merge_request.title))
end
def merged_merge_request_email(recipient_id, merge_request_id)
@merge_request = MergeRequest.find(merge_request_id)
- @project = @merge_request.project
mail(to: recipient(recipient_id), subject: subject("Accepted merge request !#{@merge_request.id}", @merge_request.title))
end
end
+
+
+ # Over rides default behavour to show source/target
+ # Formats arguments into a String suitable for use as an email subject
+ #
+ # extra - Extra Strings to be inserted into the subject
+ #
+ # Examples
+ #
+ # >> subject('Lorem ipsum')
+ # => "GitLab Merge Request | Lorem ipsum"
+ #
+ # # Automatically inserts Project name:
+ # Forked MR
+ # => source project => <Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...>
+ # => target project => <Project id: 2, name: "My Ror", path: "ruby_on_rails", ...>
+ # => source branch => source
+ # => target branch => target
+ # >> subject('Lorem ipsum')
+ # => "GitLab Merge Request | Ruby on Rails:source >> My Ror:target | Lorem ipsum "
+ #
+ # Non Forked MR
+ # => source project => <Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...>
+ # => target project => <Project id: 1, name: "Ruby on Rails", path: "ruby_on_rails", ...>
+ # => source branch => source
+ # => target branch => target
+ # >> subject('Lorem ipsum')
+ # => "GitLab Merge Request | Ruby on Rails | source >> target | Lorem ipsum "
+ # # Accepts multiple arguments
+ # >> subject('Lorem ipsum', 'Dolor sit amet')
+ # => "GitLab Merge Request | Lorem ipsum | Dolor sit amet"
+ def subject(*extra)
+ subject = "GitLab Merge Request |"
+ if @merge_request.for_fork?
+ subject << "#{@merge_request.source_project.name_with_namespace}:#{merge_request.source_branch} >> #{@merge_request.target_project.name_with_namespace}:#{merge_request.target_branch}"
+ else
+ subject << "#{@merge_request.source_project.name_with_namespace} | #{merge_request.source_branch} >> #{merge_request.target_branch}"
+ end
+ subject << " | " + extra.join(' | ') if extra.present?
+ subject
+ end
end