0001-Detect-diff-files-in-e-mailed-issues-and-map-patch-t.patch

Anthony Mallet, 2020-03-10 11:20

Download (2.33 KB)

View differences:

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
644
-