Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Léo-Paul Géneau
gitlab-ce
Commits
6c1690fc
Commit
6c1690fc
authored
Sep 13, 2016
by
Artem Sidorenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allow empty merge requests
parent
b26a3d53
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
71 additions
and
49 deletions
+71
-49
CHANGELOG
CHANGELOG
+1
-0
app/assets/stylesheets/pages/merge_requests.scss
app/assets/stylesheets/pages/merge_requests.scss
+12
-0
app/services/merge_requests/build_service.rb
app/services/merge_requests/build_service.rb
+11
-12
app/views/projects/merge_requests/_new_compare.html.haml
app/views/projects/merge_requests/_new_compare.html.haml
+0
-13
app/views/projects/merge_requests/_new_submit.html.haml
app/views/projects/merge_requests/_new_submit.html.haml
+28
-22
app/views/shared/icons/_illustration_no_commits.svg
app/views/shared/icons/_illustration_no_commits.svg
+1
-0
spec/services/merge_requests/build_service_spec.rb
spec/services/merge_requests/build_service_spec.rb
+18
-2
No files found.
CHANGELOG
View file @
6c1690fc
...
@@ -80,6 +80,7 @@ v 8.13.0 (unreleased)
...
@@ -80,6 +80,7 @@ v 8.13.0 (unreleased)
- Changed Slack service user referencing from full name to username (Sebastian Poxhofer)
- Changed Slack service user referencing from full name to username (Sebastian Poxhofer)
- Retouch environments list and deployments list
- Retouch environments list and deployments list
- Add Container Registry on/off status to Admin Area !6638 (the-undefined)
- Add Container Registry on/off status to Admin Area !6638 (the-undefined)
- Allow empty merge requests !6384 (Artem Sidorenko)
- Grouped pipeline dropdown is a scrollable container
- Grouped pipeline dropdown is a scrollable container
- Fix a typo in doc/api/labels.md
- Fix a typo in doc/api/labels.md
...
...
app/assets/stylesheets/pages/merge_requests.scss
View file @
6c1690fc
...
@@ -204,6 +204,18 @@
...
@@ -204,6 +204,18 @@
word-break
:
break-all
;
word-break
:
break-all
;
}
}
.commits-empty
{
text-align
:
center
;
h4
{
padding-top
:
20px
;
padding-bottom
:
10px
;
}
svg
{
width
:
230px
;
}
}
.mr-list
{
.mr-list
{
.merge-request
{
.merge-request
{
padding
:
10px
15px
;
padding
:
10px
15px
;
...
...
app/services/merge_requests/build_service.rb
View file @
6c1690fc
...
@@ -4,7 +4,7 @@ module MergeRequests
...
@@ -4,7 +4,7 @@ module MergeRequests
merge_request
=
MergeRequest
.
new
(
params
)
merge_request
=
MergeRequest
.
new
(
params
)
# Set MR attributes
# Set MR attributes
merge_request
.
can_be_created
=
fals
e
merge_request
.
can_be_created
=
tru
e
merge_request
.
compare_commits
=
[]
merge_request
.
compare_commits
=
[]
merge_request
.
source_project
=
project
unless
merge_request
.
source_project
merge_request
.
source_project
=
project
unless
merge_request
.
source_project
...
@@ -22,6 +22,12 @@ module MergeRequests
...
@@ -22,6 +22,12 @@ module MergeRequests
return
build_failed
(
merge_request
,
message
)
return
build_failed
(
merge_request
,
message
)
end
end
if
merge_request
.
source_project
==
merge_request
.
target_project
&&
merge_request
.
target_branch
==
merge_request
.
source_branch
return
build_failed
(
merge_request
,
'You must select different branches'
)
end
compare
=
CompareService
.
new
.
execute
(
compare
=
CompareService
.
new
.
execute
(
merge_request
.
source_project
,
merge_request
.
source_project
,
merge_request
.
source_branch
,
merge_request
.
source_branch
,
...
@@ -29,17 +35,8 @@ module MergeRequests
...
@@ -29,17 +35,8 @@ module MergeRequests
merge_request
.
target_branch
,
merge_request
.
target_branch
,
)
)
commits
=
compare
.
commits
merge_request
.
compare_commits
=
compare
.
commits
merge_request
.
compare
=
compare
# At this point we decide if merge request can be created
# If we have at least one commit to merge -> creation allowed
if
commits
.
present?
merge_request
.
compare_commits
=
commits
merge_request
.
can_be_created
=
true
merge_request
.
compare
=
compare
else
merge_request
.
can_be_created
=
false
end
set_title_and_description
(
merge_request
)
set_title_and_description
(
merge_request
)
end
end
...
@@ -89,6 +86,8 @@ module MergeRequests
...
@@ -89,6 +86,8 @@ module MergeRequests
end
end
end
end
merge_request
.
title
=
merge_request
.
wip_title
if
commits
.
empty?
merge_request
merge_request
end
end
...
...
app/views/projects/merge_requests/_new_compare.html.haml
View file @
6c1690fc
...
@@ -65,19 +65,6 @@
...
@@ -65,19 +65,6 @@
-
if
@merge_request
.
errors
.
any?
-
if
@merge_request
.
errors
.
any?
=
form_errors
(
@merge_request
)
=
form_errors
(
@merge_request
)
-
elsif
@merge_request
.
source_branch
.
present?
&&
@merge_request
.
target_branch
.
present?
.light-well.append-bottom-default
.center
%h4
There isn't anything to merge.
%p
.slead
-
if
@merge_request
.
source_branch
==
@merge_request
.
target_branch
You'll need to use different branch names to get a valid comparison.
-
else
%span
.label-branch
#{
@merge_request
.
source_branch
}
and
%span
.label-branch
#{
@merge_request
.
target_branch
}
are the same.
=
f
.
submit
'Compare branches and continue'
,
class:
"btn btn-new mr-compare-btn"
=
f
.
submit
'Compare branches and continue'
,
class:
"btn btn-new mr-compare-btn"
:javascript
:javascript
...
...
app/views/projects/merge_requests/_new_submit.html.haml
View file @
6c1690fc
...
@@ -18,29 +18,35 @@
...
@@ -18,29 +18,35 @@
=
f
.
hidden_field
:target_branch
=
f
.
hidden_field
:target_branch
.mr-compare.merge-request
.mr-compare.merge-request
%ul
.merge-request-tabs.nav-links.no-top.no-bottom
-
if
@commits
.
empty?
%li
.commits-tab.active
.commits-empty
=
link_to
url_for
(
params
),
data:
{
target:
'div#commits'
,
action:
'new'
,
toggle:
'tab'
}
do
%h4
Commits
There are no commits yet.
%span
.badge
=
@commits
.
size
=
custom_icon
(
'illustration_no_commits'
)
-
if
@pipeline
-
else
%li
.builds-tab
%ul
.merge-request-tabs.nav-links.no-top.no-bottom
=
link_to
url_for
(
params
),
data:
{
target:
'div#builds'
,
action:
'builds'
,
toggle:
'tab'
}
do
%li
.commits-tab.active
Builds
=
link_to
url_for
(
params
),
data:
{
target:
'div#commits'
,
action:
'new'
,
toggle:
'tab'
}
do
%span
.badge
=
@statuses
.
size
Commits
%li
.diffs-tab
%span
.badge
=
@commits
.
size
=
link_to
url_for
(
params
.
merge
(
action:
'new_diffs'
)),
data:
{
target:
'div#diffs'
,
action:
'new/diffs'
,
toggle:
'tab'
}
do
-
if
@pipeline
Changes
%li
.builds-tab
%span
.badge
=
@merge_request
.
diff_size
=
link_to
url_for
(
params
),
data:
{
target:
'div#builds'
,
action:
'builds'
,
toggle:
'tab'
}
do
Builds
%span
.badge
=
@statuses
.
size
%li
.diffs-tab
=
link_to
url_for
(
params
.
merge
(
action:
'new_diffs'
)),
data:
{
target:
'div#diffs'
,
action:
'new/diffs'
,
toggle:
'tab'
}
do
Changes
%span
.badge
=
@merge_request
.
diff_size
.tab-content
.tab-content
#commits
.commits.tab-pane.active
#commits
.commits.tab-pane.active
=
render
"projects/merge_requests/show/commits"
=
render
"projects/merge_requests/show/commits"
#diffs
.diffs.tab-pane
#diffs
.diffs.tab-pane
-
# This tab is always loaded via AJAX
-
# This tab is always loaded via AJAX
-
if
@pipeline
-
if
@pipeline
#builds
.builds.tab-pane
#builds
.builds.tab-pane
=
render
"projects/merge_requests/show/builds"
=
render
"projects/merge_requests/show/builds"
.mr-loading-status
.mr-loading-status
=
spinner
=
spinner
...
...
app/views/shared/icons/_illustration_no_commits.svg
0 → 100644
View file @
6c1690fc
<svg
xmlns=
"http://www.w3.org/2000/svg"
viewBox=
"0 0 168 107"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
><g
fill=
"#eee"
fill-rule=
"evenodd"
><path
d=
"m4.01 2h1.102c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-1.102c-2.218 0-4.01 1.788-4.01 4 0 .552.448 1 1 1 .552 0 1-.448 1-1 0-1.108.892-2 2.01-2m12.702 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m11.6 0c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7m8.088 0c.822 0 1.554.503 1.86 1.254.208.512.791.758 1.303.55.512-.208.758-.791.55-1.303-.609-1.497-2.069-2.5-3.712-2.5h-2.188c-.552 0-1 .448-1 1 0 .552.448 1 1 1h2.188m2.01 12.518c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7m0 11.6c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7m0 11.6c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7m0 6.282c0 1.108-.892 2-2.01 2h-.72c-.552 0-1 .448-1 1 0 .552.448 1 1 1h.72c2.218 0 4.01-1.788 4.01-4v-.382c0-.552-.448-1-1-1-.552 0-1 .448-1 1v.382m-14.325 2c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-11.6 0c-.552 0-1 .448-1 1 0 .552.448 1 1 1h5.7c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-5.7m-8.47 0c-.755 0-1.438-.424-1.782-1.085-.255-.49-.859-.681-1.349-.426-.49.255-.681.859-.426 1.349.684 1.316 2.046 2.162 3.556 2.162h2.57c.552 0 1-.448 1-1 0-.552-.448-1-1-1h-2.57m-2.01-12.136c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7m0-11.6c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7m0-11.6c0-.552-.448-1-1-1-.552 0-1 .448-1 1v5.7c0 .552.448 1 1 1 .552 0 1-.448 1-1v-5.7m0-6.664c0-.552-.448-1-1-1-.552 0-1 .448-1 1v.764c0 .552.448 1 1 1 .552 0 1-.448 1-1v-.764"
id=
"0"
/><circle
cx=
"21"
cy=
"24"
r=
"10"
/><rect
width=
"33"
height=
"3"
x=
"37"
y=
"18"
rx=
"1.5"
id=
"1"
/><rect
width=
"53"
height=
"3"
x=
"37"
y=
"27"
rx=
"1.5"
id=
"2"
/><path
d=
"m131 29c0 .552.447.999.996.999h22.01c.545 0 .996-.451.996-.999v-9c0-.552-.447-.999-.996-.999h-22.01c-.545 0-.996.451-.996.999v9m.996-12h22.01c1.655 0 2.996 1.344 2.996 2.999v9c0 1.657-1.35 2.999-2.996 2.999h-22.01c-1.655 0-2.996-1.344-2.996-2.999v-9c0-1.657 1.35-2.999 2.996-2.999"
id=
"3"
/><g
transform=
"translate(0 59)"
><use
xlink:href=
"#0"
/><circle
cx=
"21"
cy=
"24"
r=
"10"
/><use
xlink:href=
"#1"
/><use
xlink:href=
"#2"
/><use
xlink:href=
"#3"
/></g></g></svg>
\ No newline at end of file
spec/services/merge_requests/build_service_spec.rb
View file @
6c1690fc
...
@@ -52,12 +52,28 @@ describe MergeRequests::BuildService, services: true do
...
@@ -52,12 +52,28 @@ describe MergeRequests::BuildService, services: true do
end
end
end
end
context
'
no commits in the diff
'
do
context
'
same source and target branch
'
do
let
(
:
commits
)
{
[]
}
let
(
:
source_branch
)
{
'master'
}
it
'forbids the merge request from being created'
do
it
'forbids the merge request from being created'
do
expect
(
merge_request
.
can_be_created
).
to
eq
(
false
)
expect
(
merge_request
.
can_be_created
).
to
eq
(
false
)
end
end
it
'adds an error message to the merge request'
do
expect
(
merge_request
.
errors
).
to
contain_exactly
(
'You must select different branches'
)
end
end
context
'no commits in the diff'
do
let
(
:commits
)
{
[]
}
it
'allows the merge request to be created'
do
expect
(
merge_request
.
can_be_created
).
to
eq
(
true
)
end
it
'adds a WIP prefix to the merge request title'
do
expect
(
merge_request
.
title
).
to
eq
(
'WIP: Feature branch'
)
end
end
end
context
'one commit in the diff'
do
context
'one commit in the diff'
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment