Patch #33118 ยป 0001-Detect-diff-files-in-e-mailed-issues-and-map-patch-t.patch
| app/models/mail_handler.rb | ||
|---|---|---|
| 504 | 504 | |
| 505 | 505 |
# If there is still no body found, and there are no mime-parts defined, |
| 506 | 506 |
# we use the whole raw mail body |
| 507 |
@plain_text_body ||= email_parts_to_text([email]).presence if email.all_parts.empty? |
|
| 507 |
if email.all_parts.empty? |
|
| 508 |
@plain_text_body ||= email_parts_to_text([email]).presence |
|
| 509 | ||
| 510 |
# map patch to attachment |
|
| 511 |
patch_to_attachement |
|
| 512 |
end |
|
| 508 | 513 | |
| 509 | 514 |
# As a fallback we return an empty plain text body (e.g. if we have only |
| 510 | 515 |
# empty text parts but a non-text attachment) |
| ... | ... | |
| 640 | 645 |
def find_assignee_from_keyword(keyword, issue) |
| 641 | 646 |
Principal.detect_by_keyword(issue.assignable_users, keyword) |
| 642 | 647 |
end |
| 648 | ||
| 649 |
# patch to attachement |
|
| 650 |
def patch_to_attachement |
|
| 651 |
return unless @plain_text_body =~ /^--- .*\n[+][+][+] .*\n@@/ |
|
| 652 |
return unless @plain_text_body =~ /^(---$|diff -|Index: )/ |
|
| 653 | ||
| 654 |
@plain_text_body = $` |
|
| 655 |
email.attachments['patch.diff'] = {
|
|
| 656 |
:mime_type => 'text/x-diff', |
|
| 657 |
:content => email.to_s |
|
| 658 |
} |
|
| 659 |
end |
|
| 643 | 660 |
end |