Skip to content
Snippets Groups Projects
Commit 328b52d5 authored by Rubén Dávila's avatar Rubén Dávila Committed by Robert Speicher
Browse files

Some updates after last code review.

parent 38e708f0
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -13,16 +13,10 @@ module CreatesCommit
result = service.new(@tree_edit_project, current_user, commit_params).execute
 
if result[:status] == :success
flash[:notice] = success_notice || "Your changes have been successfully committed."
if create_merge_request?
success_path = merge_request_exists? ? existent_merge_request_path : new_merge_request_path
target = different_project? ? "project" : "branch"
flash[:notice] << " You can now submit a merge request to get this change into the original #{target}."
end
update_flash_notice(success_notice)
 
respond_to do |format|
format.html { redirect_to success_path }
format.html { redirect_to final_success_path(success_path) }
format.json { render json: { message: "success", filePath: success_path } }
end
else
Loading
Loading
@@ -41,14 +35,32 @@ module CreatesCommit
end
 
def authorize_edit_tree!
return if can?(current_user, :push_code, project)
return if current_user && current_user.already_forked?(project)
return if can_collaborate_with_project?
 
access_denied!
end
 
private
 
def update_flash_notice(success_notice)
flash[:notice] = success_notice || "Your changes have been successfully committed."
if create_merge_request?
if merge_request_exists?
flash[:notice] = nil
else
target = different_project? ? "project" : "branch"
flash[:notice] << " You can now submit a merge request to get this change into the original #{target}."
end
end
end
def final_success_path(success_path)
return success_path unless create_merge_request?
merge_request_exists? ? existing_merge_request_path : new_merge_request_path
end
def new_merge_request_path
new_namespace_project_merge_request_path(
@mr_source_project.namespace,
Loading
Loading
@@ -62,15 +74,15 @@ module CreatesCommit
)
end
 
def existent_merge_request_path
def existing_merge_request_path
namespace_project_merge_request_path(@mr_target_project.namespace, @mr_target_project, @merge_request)
end
 
def merge_request_exists?
@merge_request = @mr_target_project.merge_requests.opened.where(
source_branch: @mr_source_branch,
target_branch: @mr_target_branch
).first
return @merge_request if defined?(@merge_request)
@merge_request = @mr_target_project.merge_requests.opened.find_by(
source_branch: @mr_source_branch, target_branch: @mr_target_branch)
end
 
def different_project?
Loading
Loading
Loading
Loading
@@ -3,6 +3,7 @@ class Projects::ApplicationController < ApplicationController
before_action :repository
layout 'project'
 
helper_method :can_collaborate_with_project?
def authenticate_user!
# Restrict access to Projects area only
# for non-signed users
Loading
Loading
@@ -36,4 +37,11 @@ class Projects::ApplicationController < ApplicationController
def builds_enabled
return render_404 unless @project.builds_enabled?
end
def can_collaborate_with_project?(project = nil)
project ||= @project
can?(current_user, :push_code, project) ||
(current_user && current_user.already_forked?(project))
end
end
Loading
Loading
@@ -123,11 +123,28 @@ module CommitsHelper
)
end
 
def can_collaborate_with_project?(project = nil)
project ||= @project
can?(current_user, :push_code, project) ||
(current_user && current_user.already_forked?(project))
def revert_commit_link(show_modal_condition, continue_to_path)
if show_modal_condition
link_to('Revert', '#modal-revert-commit',
'data-target' => '#modal-revert-commit',
'data-toggle' => 'modal',
class: 'btn btn-grouped btn-close',
title: 'Create merge request to revert commit'
)
else
continue_params = {
to: continue_to_path,
notice: edit_in_new_fork_notice + ' Try to revert this commit again.',
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 'Revert', fork_path, class: 'btn btn-grouped btn-close', method: :post,
title: 'Create merge request to revert commit'
end
end
 
protected
Loading
Loading
Loading
Loading
@@ -96,7 +96,6 @@ module MergeRequestsHelper
def can_update_merge_request?
project ||= @project
 
can?(current_user, :update_merge_request, project) ||
(current_user && current_user.already_forked?(project))
can_collaborate_with_project?(project)
end
end
Loading
Loading
@@ -56,8 +56,7 @@ module TreeHelper
 
return false unless on_top_of_branch?(project, ref)
 
can?(current_user, :push_code, project) ||
(current_user && current_user.already_forked?(project))
can_collaborate_with_project?(project)
end
 
def tree_edit_branch(project = @project, ref = @ref)
Loading
Loading
Loading
Loading
@@ -220,17 +220,17 @@ class Commit
end
 
def revert_message
"Revert \"#{safe_message.lines.first.chomp}\"".truncate(80) + "\n\nReverts #{to_reference}"
"Revert \"#{title}\"".truncate(80) + "\n\nReverts #{sha}"
end
 
def is_a_merge_commit?
def merge_commit?
parents.size > 1
end
 
def merged_merge_request
return @merged_merge_request if defined?(@merged_merge_request)
 
@merged_merge_request = is_a_merge_commit? && MergeRequest.where(merge_commit_sha: id).first
@merged_merge_request = merge_commit? && MergeRequest.find_by(merge_commit_sha: id)
end
 
private
Loading
Loading
Loading
Loading
@@ -626,7 +626,7 @@ class Repository
source_sha = find_branch(base_branch).target
target_branch = create_mr ? commit.revert_branch_name : base_branch
args = [commit.id, source_sha]
args << { mainline: 1 } if commit.is_a_merge_commit?
args << { mainline: 1 } if commit.merge_commit?
 
# Temporary branch exists and contains the revert commit
return true if create_mr && find_branch(target_branch)
Loading
Loading
@@ -638,14 +638,14 @@ class Repository
 
commit_with_hooks(user, target_branch) do |ref|
committer = user_to_committer(user)
source_sha = Rugged::Commit.create(rugged, {
source_sha = Rugged::Commit.create(rugged,
message: commit.revert_message,
author: committer,
committer: committer,
tree: revert_index.write_tree(rugged),
parents: [rugged.lookup(source_sha)],
update_ref: ref
})
)
end
end
 
Loading
Loading
Loading
Loading
@@ -16,17 +16,7 @@
= link_to namespace_project_tree_path(@project.namespace, @project, @commit), class: "btn btn-grouped" do
= icon('files-o')
Browse Files
- if can_collaborate_with_project?
= 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_commit_path(@project.namespace, @project, @commit.id),
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', method: :post } do
Revert
= revert_commit_link(can_collaborate_with_project?, namespace_project_commit_path(@project.namespace, @project, @commit.id))
%div
 
%p
Loading
Loading
Loading
Loading
@@ -20,14 +20,4 @@
= 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?
- 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
= revert_commit_link(can_update_merge_request?, namespace_project_merge_request_path(@project.namespace, @project, @merge_request))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment