Commit fbcf8adc authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre Committed by Stan Hu

Don't synchronize default branch for pull mirrors

Revert to the previous behavior for pull mirrors where the
default branch is not synchronized. Not everyone wants to
mirror the default branch of the upstream repository.
parent 9cc8b3ec
...@@ -17,7 +17,6 @@ module Projects ...@@ -17,7 +17,6 @@ module Projects
end end
update_branches update_branches
update_root_ref
success success
rescue Gitlab::Shell::Error, UpdateError => e rescue Gitlab::Shell::Error, UpdateError => e
...@@ -61,22 +60,6 @@ module Projects ...@@ -61,22 +60,6 @@ module Projects
end end
end end
# Update the default branch querying the remote to determine its HEAD
def update_root_ref
# Fetch remote default branch doesn't work with SSH mirrors:
# https://gitlab.com/gitlab-org/gitaly/issues/1363
return if ssh_mirror?
project.update_root_ref(::Repository::MIRROR_REMOTE)
end
def ssh_mirror?
uri = Addressable::URI.parse(project.import_url)
uri.scheme.present? && uri.scheme == 'ssh'
rescue Addressable::URI::InvalidURIError
false
end
def update_tags(&block) def update_tags(&block)
old_tags = repository_tags_with_target.each_with_object({}) { |tag, tags| tags[tag.name] = tag } old_tags = repository_tags_with_target.each_with_object({}) { |tag, tags| tags[tag.name] = tag }
......
---
title: Does not synchronize default branch for pull mirrors
merge_request: 8138
author:
type: changed
...@@ -23,8 +23,6 @@ describe Projects::UpdateMirrorService do ...@@ -23,8 +23,6 @@ describe Projects::UpdateMirrorService do
end end
it "fetches the upstream repository" do it "fetches the upstream repository" do
stub_find_remote_root_ref(project)
expect(project).to receive(:fetch_mirror) expect(project).to receive(:fetch_mirror)
service.execute service.execute
...@@ -32,7 +30,6 @@ describe Projects::UpdateMirrorService do ...@@ -32,7 +30,6 @@ describe Projects::UpdateMirrorService do
it 'rescues exceptions from Repository#ff_merge' do it 'rescues exceptions from Repository#ff_merge' do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
expect(project.repository).to receive(:ff_merge).and_raise(Gitlab::Git::PreReceiveError) expect(project.repository).to receive(:ff_merge).and_raise(Gitlab::Git::PreReceiveError)
...@@ -41,7 +38,6 @@ describe Projects::UpdateMirrorService do ...@@ -41,7 +38,6 @@ describe Projects::UpdateMirrorService do
it "returns success when updated succeeds" do it "returns success when updated succeeds" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
result = service.execute result = service.execute
...@@ -51,7 +47,6 @@ describe Projects::UpdateMirrorService do ...@@ -51,7 +47,6 @@ describe Projects::UpdateMirrorService do
context "updating tags" do context "updating tags" do
it "creates new tags" do it "creates new tags" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -60,7 +55,6 @@ describe Projects::UpdateMirrorService do ...@@ -60,7 +55,6 @@ describe Projects::UpdateMirrorService do
it "only invokes GitTagPushService for tags pointing to commits" do it "only invokes GitTagPushService for tags pointing to commits" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
expect(GitTagPushService).to receive(:new) expect(GitTagPushService).to receive(:new)
.with(project, project.owner, hash_including(ref: 'refs/tags/new-tag')) .with(project, project.owner, hash_including(ref: 'refs/tags/new-tag'))
...@@ -84,7 +78,6 @@ describe Projects::UpdateMirrorService do ...@@ -84,7 +78,6 @@ describe Projects::UpdateMirrorService do
project.reload project.reload
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -93,7 +86,6 @@ describe Projects::UpdateMirrorService do ...@@ -93,7 +86,6 @@ describe Projects::UpdateMirrorService do
it 'does not create an unprotected branch' do it 'does not create an unprotected branch' do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -105,7 +97,6 @@ describe Projects::UpdateMirrorService do ...@@ -105,7 +97,6 @@ describe Projects::UpdateMirrorService do
project.reload project.reload
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -115,7 +106,6 @@ describe Projects::UpdateMirrorService do ...@@ -115,7 +106,6 @@ describe Projects::UpdateMirrorService do
it "does not update unprotected branches" do it "does not update unprotected branches" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -126,7 +116,6 @@ describe Projects::UpdateMirrorService do ...@@ -126,7 +116,6 @@ describe Projects::UpdateMirrorService do
it "creates new branches" do it "creates new branches" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -135,7 +124,6 @@ describe Projects::UpdateMirrorService do ...@@ -135,7 +124,6 @@ describe Projects::UpdateMirrorService do
it "updates existing branches" do it "updates existing branches" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
service.execute service.execute
...@@ -146,7 +134,6 @@ describe Projects::UpdateMirrorService do ...@@ -146,7 +134,6 @@ describe Projects::UpdateMirrorService do
context 'with diverged branches' do context 'with diverged branches' do
before do before do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
end end
context 'when mirror_overwrites_diverged_branches is true' do context 'when mirror_overwrites_diverged_branches is true' do
...@@ -187,7 +174,6 @@ describe Projects::UpdateMirrorService do ...@@ -187,7 +174,6 @@ describe Projects::UpdateMirrorService do
it 'does not add a default master branch' do it 'does not add a default master branch' do
project = create(:project_empty_repo, :mirror, import_url: Project::UNKNOWN_IMPORT_URL) project = create(:project_empty_repo, :mirror, import_url: Project::UNKNOWN_IMPORT_URL)
repository = project.repository repository = project.repository
stub_find_remote_root_ref(project)
allow(project).to receive(:fetch_mirror) { create_file(repository) } allow(project).to receive(:fetch_mirror) { create_file(repository) }
expect(CreateBranchService).not_to receive(:create_master_branch) expect(CreateBranchService).not_to receive(:create_master_branch)
...@@ -209,35 +195,8 @@ describe Projects::UpdateMirrorService do ...@@ -209,35 +195,8 @@ describe Projects::UpdateMirrorService do
end end
end end
context 'synchronize the default branch' do
it 'updates the default branch when HEAD has changed' do
stub_fetch_mirror(project)
stub_find_remote_root_ref(project, ref: 'new-branch')
expect { service.execute }.to change { project.default_branch }.from('master').to('new-branch')
end
it 'does not update the default branch when HEAD does not change' do
stub_fetch_mirror(project)
stub_find_remote_root_ref(project, ref: 'master')
expect { service.execute }.not_to change { project.default_branch }
end
it 'does not update the default branch with SSH mirrors' do
project.update(import_url: 'ssh://git@example.com/foo/bar.git')
expect(project.repository)
.not_to receive(:find_remote_root_ref)
.with('upstream')
service.execute
end
end
it "fails when the mirror user doesn't have access" do it "fails when the mirror user doesn't have access" do
stub_fetch_mirror(project) stub_fetch_mirror(project)
stub_find_remote_root_ref(project)
result = described_class.new(project, create(:user)).execute result = described_class.new(project, create(:user)).execute
...@@ -260,13 +219,6 @@ describe Projects::UpdateMirrorService do ...@@ -260,13 +219,6 @@ describe Projects::UpdateMirrorService do
end end
end end
def stub_find_remote_root_ref(project, remote: 'upstream', ref: 'master')
allow(project.repository)
.to receive(:find_remote_root_ref)
.with(remote)
.and_return(ref)
end
def stub_fetch_mirror(project, repository: project.repository) def stub_fetch_mirror(project, repository: project.repository)
allow(project).to receive(:fetch_mirror) { fetch_mirror(repository) } allow(project).to receive(:fetch_mirror) { fetch_mirror(repository) }
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