BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
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
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
72 additions
and
49 deletions
+72
-49
CHANGELOG
CHANGELOG
+1
-0
merge_requests.scss
app/assets/stylesheets/pages/merge_requests.scss
+12
-0
build_service.rb
app/services/merge_requests/build_service.rb
+11
-12
_new_compare.html.haml
app/views/projects/merge_requests/_new_compare.html.haml
+0
-13
_new_submit.html.haml
app/views/projects/merge_requests/_new_submit.html.haml
+28
-22
_illustration_no_commits.svg
app/views/shared/icons/_illustration_no_commits.svg
+2
-0
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)
- Changed Slack service user referencing from full name to username (Sebastian Poxhofer)
- Retouch environments list and deployments list
- 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
- Fix a typo in doc/api/labels.md
...
...
app/assets/stylesheets/pages/merge_requests.scss
View file @
6c1690fc
...
...
@@ -204,6 +204,18 @@
word-break
:
break-all
;
}
.commits-empty
{
text-align
:
center
;
h4
{
padding-top
:
20px
;
padding-bottom
:
10px
;
}
svg
{
width
:
230px
;
}
}
.mr-list
{
.merge-request
{
padding
:
10px
15px
;
...
...
app/services/merge_requests/build_service.rb
View file @
6c1690fc
...
...
@@ -4,7 +4,7 @@ module MergeRequests
merge_request
=
MergeRequest
.
new
(
params
)
# Set MR attributes
merge_request
.
can_be_created
=
fals
e
merge_request
.
can_be_created
=
tru
e
merge_request
.
compare_commits
=
[]
merge_request
.
source_project
=
project
unless
merge_request
.
source_project
...
...
@@ -22,6 +22,12 @@ module MergeRequests
return
build_failed
(
merge_request
,
message
)
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
(
merge_request
.
source_project
,
merge_request
.
source_branch
,
...
...
@@ -29,17 +35,8 @@ module MergeRequests
merge_request
.
target_branch
,
)
commits
=
compare
.
commits
# 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
merge_request
.
compare_commits
=
compare
.
commits
merge_request
.
compare
=
compare
set_title_and_description
(
merge_request
)
end
...
...
@@ -89,6 +86,8 @@ module MergeRequests
end
end
merge_request
.
title
=
merge_request
.
wip_title
if
commits
.
empty?
merge_request
end
...
...
app/views/projects/merge_requests/_new_compare.html.haml
View file @
6c1690fc
...
...
@@ -65,19 +65,6 @@
-
if
@merge_request
.
errors
.
any?
=
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"
:javascript
...
...
app/views/projects/merge_requests/_new_submit.html.haml
View file @
6c1690fc
...
...
@@ -18,29 +18,35 @@
=
f
.
hidden_field
:target_branch
.mr-compare.merge-request
%ul
.merge-request-tabs.nav-links.no-top.no-bottom
%li
.commits-tab.active
=
link_to
url_for
(
params
),
data:
{
target:
'div#commits'
,
action:
'new'
,
toggle:
'tab'
}
do
Commits
%span
.badge
=
@commits
.
size
-
if
@pipeline
%li
.builds-tab
=
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
-
if
@commits
.
empty?
.commits-empty
%h4
There are no commits yet.
=
custom_icon
(
'illustration_no_commits'
)
-
else
%ul
.merge-request-tabs.nav-links.no-top.no-bottom
%li
.commits-tab.active
=
link_to
url_for
(
params
),
data:
{
target:
'div#commits'
,
action:
'new'
,
toggle:
'tab'
}
do
Commits
%span
.badge
=
@commits
.
size
-
if
@pipeline
%li
.builds-tab
=
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
#commits
.commits.tab-pane.active
=
render
"projects/merge_requests/show/commits"
#diffs
.diffs.tab-pane
-
# This tab is always loaded via AJAX
-
if
@pipeline
#builds
.builds.tab-pane
=
render
"projects/merge_requests/show/builds"
.tab-content
#commits
.commits.tab-pane.active
=
render
"projects/merge_requests/show/commits"
#diffs
.diffs.tab-pane
-
# This tab is always loaded via AJAX
-
if
@pipeline
#builds
.builds.tab-pane
=
render
"projects/merge_requests/show/builds"
.mr-loading-status
=
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
end
end
context
'
no commits in the diff
'
do
let
(
:
commits
)
{
[]
}
context
'
same source and target branch
'
do
let
(
:
source_branch
)
{
'master'
}
it
'forbids the merge request from being created'
do
expect
(
merge_request
.
can_be_created
).
to
eq
(
false
)
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
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