summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRubén Dávila <rdavila84@gmail.com>2016-02-08 17:06:04 -0500
committerRobert Speicher <rspeicher@gmail.com>2016-02-19 13:14:52 -0500
commit38e708f0cea2f6707a26854b9d077182c063dd51 (patch)
tree4501dee751a5b48079af7461c405fbb4a9ab99cf
parent9d4c105ab0054d99ae43675e758af6b8098a191a (diff)
downloadgitlab-ce-38e708f0cea2f6707a26854b9d077182c063dd51.tar.gz
Add link to fork if user can't revert MR.
-rw-r--r--app/controllers/concerns/creates_commit.rb2
-rw-r--r--app/helpers/merge_requests_helper.rb7
-rw-r--r--app/models/repository.rb2
-rw-r--r--app/views/projects/merge_requests/_show.html.haml2
-rw-r--r--app/views/projects/merge_requests/show/_mr_title.html.haml13
5 files changed, 23 insertions, 3 deletions
diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb
index f8d6621999d..1818947eb70 100644
--- a/app/controllers/concerns/creates_commit.rb
+++ b/app/controllers/concerns/creates_commit.rb
@@ -108,7 +108,7 @@ module CreatesCommit
# Merge request from fork to this project
@mr_source_project = @tree_edit_project
@mr_target_project = @project
- @mr_target_branch = @ref
+ @mr_target_branch ||= @ref
end
end
end
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index 1dd07a2a220..b4858b999d5 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -92,4 +92,11 @@ module MergeRequestsHelper
["#{source_path}:#{source_branch}", "#{target_path}:#{target_branch}"]
end
end
+
+ def can_update_merge_request?
+ project ||= @project
+
+ can?(current_user, :update_merge_request, project) ||
+ (current_user && current_user.already_forked?(project))
+ end
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index a77e3012e70..27e3da24559 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -628,6 +628,8 @@ class Repository
args = [commit.id, source_sha]
args << { mainline: 1 } if commit.is_a_merge_commit?
+ # Temporary branch exists and contains the revert commit
+ return true if create_mr && find_branch(target_branch)
return false unless diff_exists?(source_sha, commit.id)
revert_index = rugged.revert_commit(*args)
diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml
index da67645bc2b..24a33954821 100644
--- a/app/views/projects/merge_requests/_show.html.haml
+++ b/app/views/projects/merge_requests/_show.html.haml
@@ -85,6 +85,8 @@
= spinner
= render 'shared/issuable/sidebar', issuable: @merge_request
+- if @merge_request.merge_commit_sha
+ = render "projects/commit/revert", commit_id: @merge_request.merge_commit_sha
:javascript
var merge_request;
diff --git a/app/views/projects/merge_requests/show/_mr_title.html.haml b/app/views/projects/merge_requests/show/_mr_title.html.haml
index 87cd50abdd9..a6aac25ca8c 100644
--- a/app/views/projects/merge_requests/show/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_title.html.haml
@@ -18,7 +18,16 @@
Edit
- if @merge_request.closed?
= link_to 'Reopen', merge_request_path(@merge_request, merge_request: {state_event: :reopen }), method: :put, class: 'btn btn-nr btn-grouped btn-reopen reopen-mr-link', title: "Reopen merge request"
- - if @merge_request.merged? && @merge_request.merge_commit_sha.present?
- = render "projects/commit/revert", commit_id: @merge_request.merge_commit_sha
+
+ - if @merge_request.merged? && @merge_request.merge_commit_sha.present?
+ - if can_update_merge_request?
= link_to '#modal-revert-commit', { 'data-target' => '#modal-revert-commit', 'data-toggle' => 'modal', class: 'btn btn-grouped btn-close'} do
Revert
+ - else
+ - continue_params = { to: namespace_project_merge_request_path(@project.namespace, @project, @merge_request),
+ notice: edit_in_new_fork_notice,
+ notice_now: edit_in_new_fork_notice_now }
+ - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key: current_user.namespace.id,
+ continue: continue_params)
+ = link_to fork_path, { class: 'btn btn-grouped btn-close', method: :post } do
+ Revert