Commit 9c8075c4 authored by Stan Hu's avatar Stan Hu

Make Project#ensure_repository force create a repo

In Geo, Project#ensure_repository is used to make sure that a Git repo
is available to be fetched on a secondary. If a project were a fork,
this directory would never be created.

Closes gitlab-org/gitlab-ee#2800
parent 5a983ac4
...@@ -1073,9 +1073,10 @@ class Project < ActiveRecord::Base ...@@ -1073,9 +1073,10 @@ class Project < ActiveRecord::Base
merge_requests.where(source_project_id: self.id) merge_requests.where(source_project_id: self.id)
end end
def create_repository def create_repository(force = false)
# Forked import is handled asynchronously # Forked import is handled asynchronously
unless forked? return if forked? && !force
if gitlab_shell.add_repository(repository_storage_path, path_with_namespace) if gitlab_shell.add_repository(repository_storage_path, path_with_namespace)
repository.after_create repository.after_create
true true
...@@ -1084,10 +1085,9 @@ class Project < ActiveRecord::Base ...@@ -1084,10 +1085,9 @@ class Project < ActiveRecord::Base
false false
end end
end end
end
def ensure_repository def ensure_repository
create_repository unless repository_exists? create_repository(true) unless repository_exists?
end end
def repository_exists? def repository_exists?
......
---
title: Make Project#ensure_repository force create a repo
merge_request:
author:
...@@ -1357,6 +1357,19 @@ describe Project, models: true do ...@@ -1357,6 +1357,19 @@ describe Project, models: true do
project.ensure_repository project.ensure_repository
end end
it 'creates the repository if it is a fork' do
expect(project).to receive(:forked?).and_return(true)
allow(project).to receive(:repository_exists?)
.and_return(false)
expect(shell).to receive(:add_repository)
.with(project.repository_storage_path, project.path_with_namespace)
.and_return(true)
project.ensure_repository
end
end end
describe '#user_can_push_to_empty_repo?' do describe '#user_can_push_to_empty_repo?' do
......
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