Use message body for merge request description
When a merge request is created from email, use message body as merge request description. If message body is empty then merge request description is still created from the source branch commit (if there is only single commit in the merge request). If message body is empty and there are multiple commits in the source branch, then merge request description is left empty. Closes #40968
This commit is contained in:
parent
806a68a81f
commit
b39b5524f2
5 changed files with 37 additions and 2 deletions
|
@ -138,7 +138,8 @@ You can create a new merge request by sending an email to a user-specific email
|
|||
address. The address can be obtained on the merge requests page by clicking on
|
||||
a **Email a new merge request to this project** button. The subject will be
|
||||
used as the source branch name for the new merge request and the target branch
|
||||
will be the default branch for the project.
|
||||
will be the default branch for the project. The message body (if not empty)
|
||||
will be used as the merge request description.
|
||||
|
||||
## Revert changes
|
||||
|
||||
|
|
|
@ -55,11 +55,13 @@ module Gitlab
|
|||
end
|
||||
|
||||
def merge_request_params
|
||||
{
|
||||
params = {
|
||||
source_project_id: project.id,
|
||||
source_branch: mail.subject,
|
||||
target_project_id: project.id
|
||||
}
|
||||
params[:description] = message if message.present?
|
||||
params
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,3 +16,5 @@ X-Sieve: CMU Sieve 2.2
|
|||
X-Received: by 10.0.0.1 with SMTP id n7mr11234144ipb.85.1371157428600; Thu,
|
||||
13 Jun 2013 14:03:48 -0700 (PDT)
|
||||
X-Scanned-By: MIMEDefang 2.69 on IPv6:2001:470:1d:165::1
|
||||
|
||||
Merge request description
|
||||
|
|
18
spec/fixtures/emails/valid_new_merge_request_no_description.eml
vendored
Normal file
18
spec/fixtures/emails/valid_new_merge_request_no_description.eml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
Return-Path: <jake@adventuretime.ooo>
|
||||
Received: from iceking.adventuretime.ooo ([unix socket]) by iceking (Cyrus v2.2.13-Debian-2.2.13-19+squeeze3) with LMTPA; Thu, 13 Jun 2013 17:03:50 -0400
|
||||
Received: from mail-ie0-x234.google.com (mail-ie0-x234.google.com [IPv6:2607:f8b0:4001:c03::234]) by iceking.adventuretime.ooo (8.14.3/8.14.3/Debian-9.4) with ESMTP id r5DL3nFJ016967 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for <incoming+gitlabhq/gitlabhq@appmail.adventuretime.ooo>; Thu, 13 Jun 2013 17:03:50 -0400
|
||||
Received: by mail-ie0-f180.google.com with SMTP id f4so21977375iea.25 for <incoming+gitlabhq/gitlabhq@appmail.adventuretime.ooo>; Thu, 13 Jun 2013 14:03:48 -0700
|
||||
Received: by 10.0.0.1 with HTTP; Thu, 13 Jun 2013 14:03:48 -0700
|
||||
Date: Thu, 13 Jun 2013 17:03:48 -0400
|
||||
From: Jake the Dog <jake@adventuretime.ooo>
|
||||
To: incoming+gitlabhq/gitlabhq+merge-request+auth_token@appmail.adventuretime.ooo
|
||||
Message-ID: <CADkmRc+rNGAGGbV2iE5p918UVy4UyJqVcXRO2=otppgzduJSg@mail.gmail.com>
|
||||
Subject: feature
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain;
|
||||
charset=ISO-8859-1
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Sieve: CMU Sieve 2.2
|
||||
X-Received: by 10.0.0.1 with SMTP id n7mr11234144ipb.85.1371157428600; Thu,
|
||||
13 Jun 2013 14:03:48 -0700 (PDT)
|
||||
X-Scanned-By: MIMEDefang 2.69 on IPv6:2001:470:1d:165::1
|
|
@ -49,6 +49,7 @@ describe Gitlab::Email::Handler::CreateMergeRequestHandler do
|
|||
expect(merge_request.author).to eq(user)
|
||||
expect(merge_request.source_branch).to eq('feature')
|
||||
expect(merge_request.title).to eq('Feature added')
|
||||
expect(merge_request.description).to eq('Merge request description')
|
||||
expect(merge_request.target_branch).to eq(project.default_branch)
|
||||
end
|
||||
end
|
||||
|
@ -79,6 +80,17 @@ describe Gitlab::Email::Handler::CreateMergeRequestHandler do
|
|||
expect { receiver.execute }.to raise_error(Gitlab::Email::InvalidMergeRequestError)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the message body is blank" do
|
||||
let(:email_raw) { fixture_file("emails/valid_new_merge_request_no_description.eml") }
|
||||
|
||||
it "creates a new merge request with description set from the last commit" do
|
||||
expect { receiver.execute }.to change { project.merge_requests.count }.by(1)
|
||||
merge_request = project.merge_requests.last
|
||||
|
||||
expect(merge_request.description).to eq('Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue