diff options
author | Izaak Alpert <ihalpert@blackberry.com> | 2013-04-25 18:15:33 +0400 |
---|---|---|
committer | Izaak Alpert <ialpert@blackberry.com> | 2013-07-18 06:41:30 +0400 |
commit | 3d7194f0112da12e8732df9ffe8b34fe7d0a9f6b (patch) | |
tree | 9b3c68c04b5ead5e35456595a07453b036b2dbc8 /app/mailers | |
parent | fd033671933fcc0f472480d98c907aefde357416 (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.rb | 47 |
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 |