Commit a163135cb5bd9886b634d8026b7adf473b023782

Authored by Dmitriy Zaporozhets
1 parent a0cc3882

Intead of showing 404 give users ability to close MR with missing branches

app/assets/stylesheets/common.scss
... ... @@ -543,3 +543,15 @@ img.emoji {
543 543 .appear-data {
544 544 display: none;
545 545 }
  546 +
  547 +.label-branch {
  548 + @include border-radius(4px);
  549 + padding: 2px 4px;
  550 + border: none;
  551 + font-size: 14px;
  552 + background: #474D57;
  553 + color: #fff;
  554 + font-family: $monospace_font;
  555 + text-shadow: 0 1px 1px #111;
  556 + font-weight: normal;
  557 +}
... ...
app/assets/stylesheets/sections/merge_requests.scss
... ... @@ -70,16 +70,6 @@ li.merge_request {
70 70 @extend .append-bottom-10;
71 71 }
72 72  
73   -.label_branch {
74   - @include border-radius(4px);
75   - padding: 2px 4px;
76   - border: none;
77   - font-size: 14px;
78   - background: #474D57;
79   - color: #fff;
80   - font-family: $monospace_font;
81   -}
82   -
83 73 .mr_source_commit,
84 74 .mr_target_commit {
85 75 .commit {
... ...
app/controllers/merge_requests_controller.rb
... ... @@ -129,11 +129,11 @@ class MergeRequestsController < ProjectResourceController
129 129  
130 130 def validates_merge_request
131 131 # Show git not found page if target branch doesn't exist
132   - return git_not_found! unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
  132 + return invalid_mr unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch)
133 133  
134 134 # Show git not found page if source branch doesn't exist
135 135 # and there is no saved commits between source & target branch
136   - return git_not_found! if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
  136 + return invalid_mr if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank?
137 137 end
138 138  
139 139 def define_show_vars
... ... @@ -158,4 +158,9 @@ class MergeRequestsController < ProjectResourceController
158 158  
159 159 can?(current_user, action, @project)
160 160 end
  161 +
  162 + def invalid_mr
  163 + # Render special view for MR with removed source or target branch
  164 + render 'invalid'
  165 + end
161 166 end
... ...
app/views/compare/_form.html.haml
... ... @@ -2,9 +2,9 @@
2 2 - unless params[:to]
3 3 %p.slead
4 4 Fill input field with commit id like
5   - %code.label_branch 4eedf23
  5 + %code.label-branch 4eedf23
6 6 or branch/tag name like
7   - %code.label_branch master
  7 + %code.label-branch master
8 8 and press compare button for commits list, code diff.
9 9  
10 10 %br
... ...
app/views/merge_requests/invalid.html.haml 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +.merge-request
  2 + = render "merge_requests/show/mr_title"
  3 + = render "merge_requests/show/mr_box"
  4 +
  5 + .alert.alert-error
  6 + %h5
  7 + %i.icon-exclamation-sign
  8 + We cannot find
  9 + %span.label-branch= @merge_request.source_branch
  10 + or
  11 + %span.label-branch= @merge_request.target_branch
  12 + branches in the repository.
  13 + %p
  14 + Maybe it was removed or never pushed.
  15 + %p
  16 + Please close Merge Request or change branches with existing one
  17 +
... ...
app/views/merge_requests/show/_mr_title.html.haml
1 1 %h3.page_title
2 2 = "Merge Request ##{@merge_request.id}:"
3 3  
4   - %span.label_branch= @merge_request.source_branch
  4 + %span.label-branch= @merge_request.source_branch
5 5 →
6   - %span.label_branch= @merge_request.target_branch
  6 + %span.label-branch= @merge_request.target_branch
7 7  
8 8 %span.pull-right
9 9 - if can?(current_user, :modify_merge_request, @merge_request)
... ...