mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-11 05:36:07 +10:00
Refactor accept merge request widget
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
@@ -405,4 +405,12 @@ class MergeRequest < ActiveRecord::Base
|
||||
|
||||
locked_at.nil? || locked_at < (Time.now - 1.day)
|
||||
end
|
||||
|
||||
def has_ci?
|
||||
source_project.ci_service && commits.any?
|
||||
end
|
||||
|
||||
def branch_missing?
|
||||
!source_branch_exists? || !target_branch_exists?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
%li= link_to "Plain Diff", merge_request_path(@merge_request, format: :diff)
|
||||
|
||||
= render "projects/merge_requests/show/how_to_merge"
|
||||
= render "projects/merge_requests/show/state_widget"
|
||||
= render "projects/merge_requests/widget/show.html.haml"
|
||||
|
||||
- if @commits.present?
|
||||
%ul.nav.nav-tabs.merge-request-tabs
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
- unless @allowed_to_merge
|
||||
- if @project.archived?
|
||||
%p
|
||||
%strong Archived projects do not provide commit access.
|
||||
- else
|
||||
.automerge_widget.cannot_be_merged.hide
|
||||
%strong This merge request contains merge conflicts that must be resolved.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
.automerge_widget.work_in_progress.hide
|
||||
%strong This merge request is marked as Work In Progress.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
.automerge_widget.can_be_merged.hide
|
||||
%strong This request can be merged automatically.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
|
||||
|
||||
- if @show_merge_controls
|
||||
.automerge_widget.can_be_merged.hide
|
||||
.clearfix
|
||||
= form_for [:automerge, @project.namespace.becomes(Namespace), @project, @merge_request], remote: true, method: :post do |f|
|
||||
.accept-merge-holder.clearfix.js-toggle-container
|
||||
.accept-action
|
||||
= f.submit "Accept Merge Request", class: "btn btn-create accept_merge_request"
|
||||
- if can_remove_branch?(@merge_request.source_project, @merge_request.source_branch) && !@merge_request.for_fork?
|
||||
.accept-control.checkbox
|
||||
= label_tag :should_remove_source_branch, class: "remove_source_checkbox" do
|
||||
= check_box_tag :should_remove_source_branch
|
||||
Remove source-branch
|
||||
.accept-control
|
||||
= link_to "#", class: "modify-merge-commit-link js-toggle-button", title: "Modify merge commit message" do
|
||||
%i.fa.fa-edit
|
||||
Modify commit message
|
||||
.js-toggle-content.hide.prepend-top-20
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
text: @merge_request.merge_commit_message,
|
||||
rows: 14, hint: true
|
||||
|
||||
%br
|
||||
.light
|
||||
If you want to merge this request manually, you can use the
|
||||
%strong
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
|
||||
|
||||
.automerge_widget.no_satellite.hide
|
||||
%p
|
||||
%span
|
||||
%strong This repository does not have a satellite. Please ask an administrator to fix this issue!
|
||||
|
||||
.automerge_widget.cannot_be_merged.hide
|
||||
%h4
|
||||
This merge request contains merge conflicts that must be resolved.
|
||||
You can try it manually on the
|
||||
%strong
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
|
||||
%p
|
||||
%button.btn.disabled{:type => 'button'}
|
||||
%i.fa.fa-warning
|
||||
Accept Merge Request
|
||||
|
||||
This happens when Git is not able to automatically resolve conflicts between branches.
|
||||
|
||||
.automerge_widget.work_in_progress.hide
|
||||
%h4
|
||||
This merge request cannot be accepted because it is marked as Work In Progress.
|
||||
|
||||
%p
|
||||
%button.btn.disabled{:type => 'button'}
|
||||
%i.fa.fa-warning
|
||||
Accept Merge Request
|
||||
|
||||
When the merge request is ready, remove the "WIP" prefix from the title to allow it to be accepted.
|
||||
|
||||
.automerge_widget.unchecked
|
||||
%p
|
||||
%strong
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
Checking automatic merge…
|
||||
|
||||
.automerge_widget.already_cannot_be_merged.hide
|
||||
%p
|
||||
%strong This merge request cannot be merged. Try to reload the page.
|
||||
|
||||
.merge-in-progress.hide
|
||||
%p
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
|
||||
Merge is in progress. Please wait… Page will be reloaded automatically.
|
||||
@@ -1,34 +0,0 @@
|
||||
- if @commits.any?
|
||||
.ci_widget.ci-success{style: "display:none"}
|
||||
= icon("check")
|
||||
%span CI build passed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
|
||||
.ci_widget.ci-failed{style: "display:none"}
|
||||
= icon("times")
|
||||
%span CI build failed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
- [:running, :pending].each do |status|
|
||||
.ci_widget{class: "ci-#{status}", style: "display:none"}
|
||||
= icon("clock-o")
|
||||
%span CI build #{status}
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
.ci_widget
|
||||
= icon("spinner spin")
|
||||
Checking for CI status for #{@merge_request.last_commit_short_sha}
|
||||
|
||||
.ci_widget.ci-canceled{style: "display:none"}
|
||||
= icon("times")
|
||||
%span CI build canceled
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
.ci_widget.ci-error{style: "display:none"}
|
||||
= icon("times")
|
||||
%span Cannot connect to the CI server. Please check your settings and try again.
|
||||
@@ -1,17 +0,0 @@
|
||||
- if @source_branch.blank?
|
||||
Source branch has been removed
|
||||
|
||||
- elsif can_remove_branch?(@merge_request.source_project, @merge_request.source_branch) && @merge_request.merged?
|
||||
.remove_source_branch_widget
|
||||
%p Changes merged into #{@merge_request.target_branch}. You can remove source branch now
|
||||
= link_to namespace_project_branch_path(@merge_request.source_project.namespace, @merge_request.source_project, @source_branch), remote: true, method: :delete, class: "btn btn-primary btn-sm remove_source_branch" do
|
||||
%i.fa.fa-times
|
||||
Remove Source Branch
|
||||
|
||||
.remove_source_branch_widget.failed.hide
|
||||
Failed to remove source branch '#{@merge_request.source_branch}'
|
||||
|
||||
.remove_source_branch_in_progress.hide
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
|
||||
Removing source branch '#{@merge_request.source_branch}'. Please wait. Page will be automatically reloaded.
|
||||
@@ -1,50 +0,0 @@
|
||||
.mr-state-widget
|
||||
- if @merge_request.source_project.ci_service && @commits.any?
|
||||
.mr-widget-heading
|
||||
= render "projects/merge_requests/show/mr_ci"
|
||||
.mr-widget-body
|
||||
- if @merge_request.open?
|
||||
- if @merge_request.source_branch_exists? && @merge_request.target_branch_exists?
|
||||
= render "projects/merge_requests/show/mr_accept"
|
||||
- else
|
||||
= render "projects/merge_requests/show/no_accept"
|
||||
|
||||
- if @merge_request.closed?
|
||||
%h4
|
||||
Rejected
|
||||
- if @merge_request.closed_event
|
||||
by #{link_to_member(@project, @merge_request.closed_event.author, avatar: true)}
|
||||
#{time_ago_with_tooltip(@merge_request.closed_event.created_at)}
|
||||
%p Changes were not merged into target branch
|
||||
|
||||
- if @merge_request.merged?
|
||||
%h4
|
||||
Accepted
|
||||
- if @merge_request.merge_event
|
||||
by #{link_to_member(@project, @merge_request.merge_event.author, avatar: true)}
|
||||
#{time_ago_with_tooltip(@merge_request.merge_event.created_at)}
|
||||
= render "projects/merge_requests/show/remove_source_branch"
|
||||
|
||||
- if @merge_request.locked?
|
||||
%h4
|
||||
Merge in progress...
|
||||
%p
|
||||
Merging is in progress. While merging this request is locked and cannot be closed.
|
||||
|
||||
- unless @commits.any?
|
||||
%h4 Nothing to merge
|
||||
%p
|
||||
Nothing to merge from
|
||||
%span.label-branch #{@merge_request.source_branch}
|
||||
to
|
||||
%span.label-branch #{@merge_request.target_branch}
|
||||
%br
|
||||
Try to use different branches or push new code.
|
||||
|
||||
- if @closes_issues.present? && @merge_request.open?
|
||||
.mr-widget-footer
|
||||
%span
|
||||
%i.fa.fa-check
|
||||
Accepting this merge request will close #{@closes_issues.size == 1 ? 'issue' : 'issues'}
|
||||
= succeed '.' do
|
||||
!= gfm(issues_sentence(@closes_issues))
|
||||
@@ -0,0 +1,9 @@
|
||||
.mr-state-widget
|
||||
= render 'heading'
|
||||
.mr-widget-body
|
||||
%h4
|
||||
Rejected
|
||||
- if @merge_request.closed_event
|
||||
by #{link_to_member(@project, @merge_request.closed_event.author, avatar: true)}
|
||||
#{time_ago_with_tooltip(@merge_request.closed_event.created_at)}
|
||||
%p Changes were not merged into target branch
|
||||
@@ -0,0 +1,34 @@
|
||||
- if @merge_request.has_ci?
|
||||
.mr-widget-heading
|
||||
.ci_widget.ci-success{style: "display:none"}
|
||||
= icon("check")
|
||||
%span CI build passed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
.ci_widget.ci-failed{style: "display:none"}
|
||||
= icon("times")
|
||||
%span CI build failed
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
- [:running, :pending].each do |status|
|
||||
.ci_widget{class: "ci-#{status}", style: "display:none"}
|
||||
= icon("clock-o")
|
||||
%span CI build #{status}
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
.ci_widget
|
||||
= icon("spinner spin")
|
||||
Checking for CI status for #{@merge_request.last_commit_short_sha}
|
||||
|
||||
.ci_widget.ci-canceled{style: "display:none"}
|
||||
= icon("times")
|
||||
%span CI build canceled
|
||||
for #{@merge_request.last_commit_short_sha}.
|
||||
= link_to "View build page", ci_build_details_path(@merge_request), :"data-no-turbolink" => "data-no-turbolink"
|
||||
|
||||
.ci_widget.ci-error{style: "display:none"}
|
||||
= icon("times")
|
||||
%span Cannot connect to the CI server. Please check your settings and try again.
|
||||
@@ -0,0 +1,8 @@
|
||||
.mr-state-widget
|
||||
= render 'heading'
|
||||
.mr-widget-body
|
||||
%h4
|
||||
Merge in progress...
|
||||
%p
|
||||
Merging is in progress. While merging this request is locked and cannot be closed.
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
.mr-state-widget
|
||||
= render 'heading'
|
||||
.mr-widget-body
|
||||
%h4
|
||||
Accepted
|
||||
- if @merge_request.merge_event
|
||||
by #{link_to_member(@project, @merge_request.merge_event.author, avatar: true)}
|
||||
#{time_ago_with_tooltip(@merge_request.merge_event.created_at)}
|
||||
%div
|
||||
- if @source_branch.blank?
|
||||
Source branch has been removed
|
||||
|
||||
- elsif can_remove_branch?(@merge_request.source_project, @merge_request.source_branch) && @merge_request.merged?
|
||||
.remove_source_branch_widget
|
||||
%p Changes merged into #{@merge_request.target_branch}. You can remove source branch now
|
||||
= link_to namespace_project_branch_path(@merge_request.source_project.namespace, @merge_request.source_project, @source_branch), remote: true, method: :delete, class: "btn btn-primary btn-sm remove_source_branch" do
|
||||
%i.fa.fa-times
|
||||
Remove Source Branch
|
||||
|
||||
.remove_source_branch_widget.failed.hide
|
||||
Failed to remove source branch '#{@merge_request.source_branch}'
|
||||
|
||||
.remove_source_branch_in_progress.hide
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
|
||||
Removing source branch '#{@merge_request.source_branch}'. Please wait. Page will be automatically reloaded.
|
||||
@@ -0,0 +1,20 @@
|
||||
- if @show_merge_controls
|
||||
.automerge_widget.can_be_merged.hide
|
||||
.clearfix
|
||||
|
||||
.automerge_widget.cannot_be_merged.hide
|
||||
|
||||
%p
|
||||
%button.btn.disabled{:type => 'button'}
|
||||
%i.fa.fa-warning
|
||||
Accept Merge Request
|
||||
|
||||
This happens when Git is not able to automatically resolve conflicts between branches.
|
||||
|
||||
|
||||
.automerge_widget.unchecked
|
||||
|
||||
.automerge_widget.already_cannot_be_merged.hide
|
||||
%p
|
||||
%strong This merge request cannot be merged. Try to reload the page.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
.mr-state-widget
|
||||
= render 'projects/merge_requests/widget/heading'
|
||||
.mr-widget-body
|
||||
- if @project.archived?
|
||||
= render 'projects/merge_requests/widget/open/archived'
|
||||
- elsif !@project.satellite.exists?
|
||||
= render 'projects/merge_requests/widget/open/no_satellite'
|
||||
- elsif @commits.blank?
|
||||
= render 'projects/merge_requests/widget/open/nothing'
|
||||
- elsif @merge_request.branch_missing?
|
||||
= render 'projects/merge_requests/widget/open/missing_branch'
|
||||
- elsif @merge_request.unchecked?
|
||||
= render 'projects/merge_requests/widget/open/check'
|
||||
- elsif @merge_request.cannot_be_merged?
|
||||
= render 'projects/merge_requests/widget/open/conflicts'
|
||||
- elsif @merge_request.work_in_progress?
|
||||
= render 'projects/merge_requests/widget/open/wip'
|
||||
- elsif !@allowed_to_merge
|
||||
= render 'projects/merge_requests/widget/open/not_allowed'
|
||||
- elsif @merge_request.can_be_merged?
|
||||
= render 'projects/merge_requests/widget/open/accept'
|
||||
|
||||
- if @closes_issues.present?
|
||||
.mr-widget-footer
|
||||
%span
|
||||
%i.fa.fa-check
|
||||
Accepting this merge request will close #{@closes_issues.size == 1 ? 'issue' : 'issues'}
|
||||
= succeed '.' do
|
||||
!= gfm(issues_sentence(@closes_issues))
|
||||
@@ -0,0 +1,8 @@
|
||||
- if @merge_request.open?
|
||||
= render 'projects/merge_requests/widget/open'
|
||||
- elsif @merge_request.merged?
|
||||
= render 'projects/merge_requests/widget/merged'
|
||||
- elsif @merge_request.closed?
|
||||
= render 'projects/merge_requests/widget/closed'
|
||||
- elsif @merge_request.locked?
|
||||
= render 'projects/merge_requests/widget/locked'
|
||||
@@ -0,0 +1,24 @@
|
||||
= form_for [:automerge, @project.namespace.becomes(Namespace), @project, @merge_request], remote: true, method: :post do |f|
|
||||
.accept-merge-holder.clearfix.js-toggle-container
|
||||
.accept-action
|
||||
= f.submit "Accept Merge Request", class: "btn btn-create accept_merge_request"
|
||||
- if can_remove_branch?(@merge_request.source_project, @merge_request.source_branch) && !@merge_request.for_fork?
|
||||
.accept-control.checkbox
|
||||
= label_tag :should_remove_source_branch, class: "remove_source_checkbox" do
|
||||
= check_box_tag :should_remove_source_branch
|
||||
Remove source-branch
|
||||
.accept-control
|
||||
= link_to "#", class: "modify-merge-commit-link js-toggle-button", title: "Modify merge commit message" do
|
||||
%i.fa.fa-edit
|
||||
Modify commit message
|
||||
.js-toggle-content.hide.prepend-top-20
|
||||
= render 'shared/commit_message_container', params: params,
|
||||
text: @merge_request.merge_commit_message,
|
||||
rows: 14, hint: true
|
||||
|
||||
%br
|
||||
.light
|
||||
If you want to merge this request manually, you can use the
|
||||
%strong
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
%p
|
||||
%strong Archived projects do not provide commit access.
|
||||
@@ -0,0 +1,4 @@
|
||||
%p
|
||||
%strong
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
Checking automatic merge…
|
||||
@@ -0,0 +1,5 @@
|
||||
%h4
|
||||
This merge request contains merge conflicts that must be resolved.
|
||||
You can try it manually on the
|
||||
%strong
|
||||
= link_to "command line", "#modal_merge_info", class: "how_to_merge_link vlink", title: "How To Merge", "data-toggle" => "modal"
|
||||
@@ -0,0 +1,5 @@
|
||||
.merge-in-progress
|
||||
%p
|
||||
%i.fa.fa-spinner.fa-spin
|
||||
|
||||
Merge is in progress. Please wait… Page will be reloaded automatically.
|
||||
@@ -0,0 +1,3 @@
|
||||
%p
|
||||
%span
|
||||
%strong This repository does not have a satellite. Please ask an administrator to fix this issue!
|
||||
@@ -0,0 +1,9 @@
|
||||
.automerge_widget.cannot_be_merged.hide
|
||||
%strong This merge request contains merge conflicts that must be resolved.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
.automerge_widget.work_in_progress.hide
|
||||
%strong This merge request is marked as Work In Progress.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
.automerge_widget.can_be_merged.hide
|
||||
%strong This request can be merged automatically.
|
||||
Only those with write access to this repository can merge merge requests.
|
||||
@@ -0,0 +1,8 @@
|
||||
%h4 Nothing to merge
|
||||
%p
|
||||
Nothing to merge from
|
||||
%span.label-branch #{@merge_request.source_branch}
|
||||
to
|
||||
%span.label-branch #{@merge_request.target_branch}
|
||||
%br
|
||||
Try to use different branches or push new code.
|
||||
@@ -0,0 +1,9 @@
|
||||
%h4
|
||||
This merge request cannot be accepted because it is marked as Work In Progress.
|
||||
|
||||
%p
|
||||
%button.btn.disabled{:type => 'button'}
|
||||
%i.fa.fa-warning
|
||||
Accept Merge Request
|
||||
|
||||
When the merge request is ready, remove the "WIP" prefix from the title to allow it to be accepted.
|
||||
Reference in New Issue
Block a user