Commit 4f0cdfca authored by Robert Speicher's avatar Robert Speicher Committed by Ruben Davila

Merge branch 'dm-fix-editing-files-on-forks-quick' into 'master'

Fix issue where files on a fork could not be edited

Closes #28188

See merge request !9349
parent ad6473de
...@@ -104,22 +104,14 @@ module CreatesCommit ...@@ -104,22 +104,14 @@ module CreatesCommit
if can?(current_user, :push_code, @project) if can?(current_user, :push_code, @project)
# Edit file in this project # Edit file in this project
@mr_source_project = @project @mr_source_project = @project
if @project.forked?
# Merge request from this project to fork origin
@mr_target_project = @project.forked_from_project
@mr_target_branch = @mr_target_project.repository.root_ref
else
# Merge request to this project
@mr_target_project = @project
@mr_target_branch = @ref || @target_branch
end
else else
# Merge request from fork to this project # Merge request from fork to this project
@mr_source_project = current_user.fork_of(@project) @mr_source_project = current_user.fork_of(@project)
end
# Merge request to this project
@mr_target_project = @project @mr_target_project = @project
@mr_target_branch = @ref || @target_branch @mr_target_branch = @ref || @target_branch
end
@mr_source_branch = guess_mr_source_branch @mr_source_branch = guess_mr_source_branch
end end
......
...@@ -86,18 +86,32 @@ describe Projects::BlobController do ...@@ -86,18 +86,32 @@ describe Projects::BlobController do
end end
context 'when user has forked project' do context 'when user has forked project' do
let(:guest) { create(:user) } let(:forked_project_link) { create(:forked_project_link, forked_from_project: project) }
let!(:forked_project) { Projects::ForkService.new(project, guest).execute } let!(:forked_project) { forked_project_link.forked_to_project }
let!(:merge_request) { create(:merge_request, source_project: project, target_project: project, source_branch: "fork-test-1", target_branch: "master") } let(:guest) { forked_project.owner }
before { sign_in(guest) } before do
sign_in(guest)
end
context 'when editing on the fork' do
before do
default_params[:namespace_id] = forked_project.namespace.to_param
default_params[:project_id] = forked_project.to_param
end
it 'redirects to blob' do
put :update, default_params
expect(response).to redirect_to(namespace_project_blob_path(forked_project.namespace, forked_project, 'master/CHANGELOG'))
end
end
context 'when editing on the original repository' do
it "redirects to forked project new merge request" do it "redirects to forked project new merge request" do
default_params[:target_branch] = "fork-test-1" default_params[:target_branch] = "fork-test-1"
default_params[:create_merge_request] = 1 default_params[:create_merge_request] = 1
allow_any_instance_of(Files::UpdateService).to receive(:commit).and_return(:success)
put :update, default_params put :update, default_params
expect(response).to redirect_to( expect(response).to redirect_to(
...@@ -115,4 +129,5 @@ describe Projects::BlobController do ...@@ -115,4 +129,5 @@ describe Projects::BlobController do
end end
end end
end end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment