diff --git a/spec/services/after_branch_delete_service_spec.rb b/spec/services/after_branch_delete_service_spec.rb
index d29e0addb5353d7e87e821edcfa08a5e8af2ad18..77ca17bc82c8fae6f1203cfceb0907382dd23a93 100644
--- a/spec/services/after_branch_delete_service_spec.rb
+++ b/spec/services/after_branch_delete_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe AfterBranchDeleteService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:service) { described_class.new(project, user) }
 
diff --git a/spec/services/ci/create_pipeline_service_spec.rb b/spec/services/ci/create_pipeline_service_spec.rb
index a969829a63e108bd5462960f91f3f1574a26bb77..d2f0337c2608070994bed8853ea244fd209aa97d 100644
--- a/spec/services/ci/create_pipeline_service_spec.rb
+++ b/spec/services/ci/create_pipeline_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Ci::CreatePipelineService, services: true do
-  let(:project) { FactoryGirl.create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:admin) }
 
   before do
diff --git a/spec/services/ci/create_trigger_request_service_spec.rb b/spec/services/ci/create_trigger_request_service_spec.rb
index 5e68343784d8b08bbb3ff99c658a8903c4236cf8..5a20102872affc3ff3425963228089c3bf7a01ec 100644
--- a/spec/services/ci/create_trigger_request_service_spec.rb
+++ b/spec/services/ci/create_trigger_request_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe Ci::CreateTriggerRequestService, services: true do
   let(:service) { described_class.new }
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:trigger) { create(:ci_trigger, project: project) }
 
   before do
diff --git a/spec/services/ci/stop_environments_service_spec.rb b/spec/services/ci/stop_environments_service_spec.rb
index 560f83d94f7c7204116caca15b63f6039a427d1e..32c72a9cf5ef093c8ed89724a2f3f2f84c01cdf2 100644
--- a/spec/services/ci/stop_environments_service_spec.rb
+++ b/spec/services/ci/stop_environments_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Ci::StopEnvironmentsService, services: true do
-  let(:project) { create(:project, :private) }
+  let(:project) { create(:project, :private, :repository) }
   let(:user) { create(:user) }
 
   let(:service) { described_class.new(project, user) }
diff --git a/spec/services/ci/update_build_queue_service_spec.rb b/spec/services/ci/update_build_queue_service_spec.rb
index f01a388b895ea31a6031725f78d33c9137e7eec7..c44e6b2a48be847e041f3474d0b8e1771062868b 100644
--- a/spec/services/ci/update_build_queue_service_spec.rb
+++ b/spec/services/ci/update_build_queue_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Ci::UpdateBuildQueueService, :services do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:build) { create(:ci_build, pipeline: pipeline) }
   let(:pipeline) { create(:ci_pipeline, project: project) }
 
diff --git a/spec/services/compare_service_spec.rb b/spec/services/compare_service_spec.rb
index 0a7fc58523f2c20a8809cbdb294063b126859da1..bea7c9652334b84859e4ddb190e70f7c1062fa54 100644
--- a/spec/services/compare_service_spec.rb
+++ b/spec/services/compare_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe CompareService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:service) { described_class.new(project, 'feature') }
 
diff --git a/spec/services/create_release_service_spec.rb b/spec/services/create_release_service_spec.rb
index 61e5ae72f5106ecc2a2d0efec36d728ab2f8e391..271ccfe796845fea22a5941e5d9ab89016fbb861 100644
--- a/spec/services/create_release_service_spec.rb
+++ b/spec/services/create_release_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe CreateReleaseService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:tag_name) { project.repository.tag_names.first }
   let(:description) { 'Awesome release!' }
diff --git a/spec/services/delete_branch_service_spec.rb b/spec/services/delete_branch_service_spec.rb
index 336f5dafb5bf9b1732b3f5377bad5c92456ae369..c4685c9aa314258e82c2f1373a0cb0232383c2f2 100644
--- a/spec/services/delete_branch_service_spec.rb
+++ b/spec/services/delete_branch_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe DeleteBranchService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:repository) { project.repository }
   let(:user) { create(:user) }
   let(:service) { described_class.new(project, user) }
diff --git a/spec/services/delete_merged_branches_service_spec.rb b/spec/services/delete_merged_branches_service_spec.rb
index 181488e89c78263815e2890d44148622e4e15cbc..a41a421fa6e6d3b86249856d119a650e253c458b 100644
--- a/spec/services/delete_merged_branches_service_spec.rb
+++ b/spec/services/delete_merged_branches_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe DeleteMergedBranchesService, services: true do
   subject(:service) { described_class.new(project, project.owner) }
 
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
 
   context '#execute' do
     context 'unprotected branches' do
diff --git a/spec/services/files/update_service_spec.rb b/spec/services/files/update_service_spec.rb
index 35e6e1392385c2f7a8773345d7e66a111ae98cb5..26aa5b432d41ca2686fb99682f1629632775c78f 100644
--- a/spec/services/files/update_service_spec.rb
+++ b/spec/services/files/update_service_spec.rb
@@ -3,7 +3,7 @@ require "spec_helper"
 describe Files::UpdateService do
   subject { described_class.new(project, user, commit_params) }
 
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:file_path) { 'files/ruby/popen.rb' }
   let(:new_contents) { 'New Content' }
diff --git a/spec/services/git_hooks_service_spec.rb b/spec/services/git_hooks_service_spec.rb
index 3318dfb22b68c6da67b222bd4bee30bb1943560e..ac7ccfbaab01dfd482e7c6d3e6de5b209b6fd3bd 100644
--- a/spec/services/git_hooks_service_spec.rb
+++ b/spec/services/git_hooks_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
 describe GitHooksService, services: true do
   include RepoHelpers
 
-  let(:user)    { create :user }
-  let(:project) { create :project }
+  let(:user)    { create(:user) }
+  let(:project) { create(:project, :repository) }
   let(:service) { GitHooksService.new }
 
   before do
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index bd71618e6f442f47bf41ba20063fd2b33b1dd622..0477cac66770db33e792bd3a99d45cbf8b9084e4 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
 describe GitPushService, services: true do
   include RepoHelpers
 
-  let(:user)          { create :user }
-  let(:project)       { create :project }
+  let(:user)    { create(:user) }
+  let(:project) { create(:project, :repository) }
 
   before do
     project.team << [user, :master]
diff --git a/spec/services/git_tag_push_service_spec.rb b/spec/services/git_tag_push_service_spec.rb
index bd074b9bd718f4d0abd9c8d8385d0f5997e534b8..b73beb3f6fc15d281c8a9fb987a9e9508e9ab82b 100644
--- a/spec/services/git_tag_push_service_spec.rb
+++ b/spec/services/git_tag_push_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
 describe GitTagPushService, services: true do
   include RepoHelpers
 
-  let(:user) { create :user }
-  let(:project) { create :project }
+  let(:user) { create(:user) }
+  let(:project) { create(:project, :repository) }
   let(:service) { GitTagPushService.new(project, user, oldrev: oldrev, newrev: newrev, ref: ref) }
 
   let(:oldrev) { Gitlab::Git::BLANK_SHA }
diff --git a/spec/services/groups/destroy_service_spec.rb b/spec/services/groups/destroy_service_spec.rb
index 98c560ffb26ba4b94e0ae2fe647e92f8855cd86c..2ee11fc8b4cbc98f534821eb879c3fabf2df0e4b 100644
--- a/spec/services/groups/destroy_service_spec.rb
+++ b/spec/services/groups/destroy_service_spec.rb
@@ -6,7 +6,7 @@ describe Groups::DestroyService, services: true do
   let!(:user)         { create(:user) }
   let!(:group)        { create(:group) }
   let!(:nested_group) { create(:group, parent: group) }
-  let!(:project)      { create(:project, namespace: group) }
+  let!(:project)      { create(:empty_project, namespace: group) }
   let!(:gitlab_shell) { Gitlab::Shell.new }
   let!(:remove_path)  { group.path + "+#{group.id}+deleted" }
 
diff --git a/spec/services/groups/update_service_spec.rb b/spec/services/groups/update_service_spec.rb
index 7c0fccb9d41257425cd05ef2248d0bacfbe012a4..91ec224d1c4ab418a80e05788f534095ede1741c 100644
--- a/spec/services/groups/update_service_spec.rb
+++ b/spec/services/groups/update_service_spec.rb
@@ -13,7 +13,7 @@ describe Groups::UpdateService, services: true do
 
         before do
           public_group.add_user(user, Gitlab::Access::MASTER)
-          create(:project, :public, group: public_group)
+          create(:empty_project, :public, group: public_group)
         end
 
         it "does not change permission level" do
@@ -27,7 +27,7 @@ describe Groups::UpdateService, services: true do
 
         before do
           internal_group.add_user(user, Gitlab::Access::MASTER)
-          create(:project, :internal, group: internal_group)
+          create(:empty_project, :internal, group: internal_group)
         end
 
         it "does not change permission level" do
@@ -55,7 +55,7 @@ describe Groups::UpdateService, services: true do
 
     before do
       internal_group.add_user(user, Gitlab::Access::MASTER)
-      create(:project, :internal, group: internal_group)
+      create(:empty_project, :internal, group: internal_group)
     end
 
     it 'returns true' do
diff --git a/spec/services/issues/build_service_spec.rb b/spec/services/issues/build_service_spec.rb
index 1dd53236fbd651af1865f545e726dcb15a161b70..17990f41b3b40d1c8eb44aa59eeb452ff3d46a4c 100644
--- a/spec/services/issues/build_service_spec.rb
+++ b/spec/services/issues/build_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper.rb'
 
 describe Issues::BuildService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
 
   before do
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
index db196ed575161f168cdcab11d500635ce402cf04..9f8346d52bb02d44e7c55b9715896e709fe98dc1 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/spec/services/issues/move_service_spec.rb
@@ -5,8 +5,8 @@ describe Issues::MoveService, services: true do
   let(:author) { create(:user) }
   let(:title) { 'Some issue' }
   let(:description) { 'Some issue description' }
-  let(:old_project) { create(:project) }
-  let(:new_project) { create(:project) }
+  let(:old_project) { create(:empty_project) }
+  let(:new_project) { create(:empty_project) }
   let(:milestone1) { create(:milestone, project_id: old_project.id, title: 'v9.0') }
 
   let(:old_issue) do
diff --git a/spec/services/issues/resolve_discussions_spec.rb b/spec/services/issues/resolve_discussions_spec.rb
index 6cc738aec080096d7be1e4bf128a8df4b2267a8b..3a72f92383c3909d4ada16bb739b5db77c722d09 100644
--- a/spec/services/issues/resolve_discussions_spec.rb
+++ b/spec/services/issues/resolve_discussions_spec.rb
@@ -10,7 +10,7 @@ class DummyService < Issues::BaseService
 end
 
 describe DummyService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
 
   before do
diff --git a/spec/services/labels/find_or_create_service_spec.rb b/spec/services/labels/find_or_create_service_spec.rb
index 7a9b34f9f963bb9c7329a5fbc8d67e6b7c51422a..de8f1827cce30ef3ec95b7eb3a78dddb361533e8 100644
--- a/spec/services/labels/find_or_create_service_spec.rb
+++ b/spec/services/labels/find_or_create_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe Labels::FindOrCreateService, services: true do
   describe '#execute' do
     let(:group)   { create(:group) }
-    let(:project) { create(:project, namespace: group) }
+    let(:project) { create(:empty_project, namespace: group) }
 
     let(:params) do
       {
diff --git a/spec/services/labels/transfer_service_spec.rb b/spec/services/labels/transfer_service_spec.rb
index 13654a0881c23a63d4c903e090ecc9879bad3cc6..11d5f1cad5e55d84d07da4eea879be29099b3466 100644
--- a/spec/services/labels/transfer_service_spec.rb
+++ b/spec/services/labels/transfer_service_spec.rb
@@ -6,8 +6,8 @@ describe Labels::TransferService, services: true do
     let(:group_1) { create(:group) }
     let(:group_2) { create(:group) }
     let(:group_3) { create(:group) }
-    let(:project_1) { create(:project, namespace: group_2) }
-    let(:project_2) { create(:project, namespace: group_3) }
+    let(:project_1) { create(:empty_project, namespace: group_2) }
+    let(:project_2) { create(:empty_project, namespace: group_3) }
 
     let(:group_label_1) { create(:group_label, group: group_1, name: 'Group Label 1') }
     let(:group_label_2) { create(:group_label, group: group_1, name: 'Group Label 2') }
diff --git a/spec/services/members/destroy_service_spec.rb b/spec/services/members/destroy_service_spec.rb
index 574df6e0f421d1b9bd8789bcc053ef1970dba4fc..41450c67d7e77c1798e3a46cbcc2405b104be838 100644
--- a/spec/services/members/destroy_service_spec.rb
+++ b/spec/services/members/destroy_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe Members::DestroyService, services: true do
   let(:user) { create(:user) }
   let(:member_user) { create(:user) }
-  let(:project) { create(:project, :public) }
+  let(:project) { create(:empty_project, :public) }
   let(:group) { create(:group, :public) }
 
   shared_examples 'a service raising ActiveRecord::RecordNotFound' do
diff --git a/spec/services/members/request_access_service_spec.rb b/spec/services/members/request_access_service_spec.rb
index 853c125dadbb92fa079d15182d9ea99e234272e2..814c17b9ad0e5291eedc9860764bbf92ef2f1266 100644
--- a/spec/services/members/request_access_service_spec.rb
+++ b/spec/services/members/request_access_service_spec.rb
@@ -29,7 +29,7 @@ describe Members::RequestAccessService, services: true do
   end
 
   context 'when current user cannot request access to the project' do
-    %i[project group].each do |source_type|
+    %i[empty_project group].each do |source_type|
       it_behaves_like 'a service raising Gitlab::Access::AccessDeniedError' do
         let(:source) { create(source_type, :private) }
       end
@@ -37,7 +37,7 @@ describe Members::RequestAccessService, services: true do
   end
 
   context 'when access requests are disabled' do
-    %i[project group].each do |source_type|
+    %i[empty_project group].each do |source_type|
       it_behaves_like 'a service raising Gitlab::Access::AccessDeniedError' do
         let(:source) { create(source_type, :public) }
       end
@@ -45,7 +45,7 @@ describe Members::RequestAccessService, services: true do
   end
 
   context 'when current user can request access to the project' do
-    %i[project group].each do |source_type|
+    %i[empty_project group].each do |source_type|
       it_behaves_like 'a service creating a access request' do
         let(:source) { create(source_type, :public, :access_requestable) }
       end
diff --git a/spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb b/spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb
index d80fb8a1af19c107b923c05188f16f885c51db87..af0a214c00f7c17e9d79bee1bfedf897aeb1bac8 100644
--- a/spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb
+++ b/spec/services/merge_requests/add_todo_when_build_fails_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe MergeRequests::AddTodoWhenBuildFailsService do
   let(:user) { create(:user) }
   let(:merge_request) { create(:merge_request) }
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:sha) { '1234567890abcdef1234567890abcdef12345678' }
   let(:ref) { merge_request.source_branch }
 
diff --git a/spec/services/merge_requests/assign_issues_service_spec.rb b/spec/services/merge_requests/assign_issues_service_spec.rb
index 5034b6ef33f14780ca0771686b2fd812cc1916df..fe75757dd29c48cca675e2da158324dcba3bc909 100644
--- a/spec/services/merge_requests/assign_issues_service_spec.rb
+++ b/spec/services/merge_requests/assign_issues_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe MergeRequests::AssignIssuesService, services: true do
   let(:user) { create(:user) }
-  let(:project) { create(:project, :public) }
+  let(:project) { create(:project, :public, :repository) }
   let(:issue) { create(:issue, project: project) }
   let(:merge_request) { create(:merge_request, :simple, source_project: project, author: user, description: "fixes #{issue.to_reference}") }
   let(:service) { described_class.new(project, user, merge_request: merge_request) }
diff --git a/spec/services/merge_requests/build_service_spec.rb b/spec/services/merge_requests/build_service_spec.rb
index adfa75a524fb3966502a08e63cf74969c30bc812..c8bd4d4601a1f7c3ea73e240f8065f7e341e4c7e 100644
--- a/spec/services/merge_requests/build_service_spec.rb
+++ b/spec/services/merge_requests/build_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe MergeRequests::BuildService, services: true do
   include RepoHelpers
 
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:issue_confidential) { false }
   let(:issue) { create(:issue, project: project, title: 'A bug', confidential: issue_confidential) }
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb
index 673c0bd6c9c8e774e5b0cdfcc62a10ac1201f6ef..0e16c7cc94bbdbd492b690217aa9313702afbd14 100644
--- a/spec/services/merge_requests/create_service_spec.rb
+++ b/spec/services/merge_requests/create_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe MergeRequests::CreateService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:assignee) { create(:user) }
 
diff --git a/spec/services/merge_requests/get_urls_service_spec.rb b/spec/services/merge_requests/get_urls_service_spec.rb
index b7a0590720893d247c814e0fbea08b32abaffaa2..290e00ea1baa51838283870faef592aab6394ef6 100644
--- a/spec/services/merge_requests/get_urls_service_spec.rb
+++ b/spec/services/merge_requests/get_urls_service_spec.rb
@@ -1,7 +1,7 @@
 require "spec_helper"
 
 describe MergeRequests::GetUrlsService do
-  let(:project) { create(:project, :public) }
+  let(:project) { create(:project, :public, :repository) }
   let(:service) { MergeRequests::GetUrlsService.new(project) }
   let(:source_branch) { "my_branch" }
   let(:new_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.namespace.name}/#{project.path}/merge_requests/new?merge_request%5Bsource_branch%5D=#{source_branch}" }
diff --git a/spec/services/merge_requests/merge_when_pipeline_succeeds_service_spec.rb b/spec/services/merge_requests/merge_when_pipeline_succeeds_service_spec.rb
index c2f205c389dc0d76f43d1d4a1ac09bf8fca752a2..769b319327532af98552151014281075c2a44eef 100644
--- a/spec/services/merge_requests/merge_when_pipeline_succeeds_service_spec.rb
+++ b/spec/services/merge_requests/merge_when_pipeline_succeeds_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe MergeRequests::MergeWhenPipelineSucceedsService do
   let(:user) { create(:user) }
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
 
   let(:mr_merge_if_green_enabled) do
     create(:merge_request, merge_when_pipeline_succeeds: true, merge_user: user,
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 92729f68e5fef164ceb254d6c312980f2eb3949e..c22d145ca5dcd9ff7a9135513b8582c44f3c5f87 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe MergeRequests::RefreshService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:service) { MergeRequests::RefreshService }
 
@@ -11,7 +11,7 @@ describe MergeRequests::RefreshService, services: true do
       group = create(:group)
       group.add_owner(@user)
 
-      @project = create(:project, namespace: group)
+      @project = create(:project, :repository, namespace: group)
       @fork_project = Projects::ForkService.new(@project, @user).execute
       @merge_request = create(:merge_request,
                               source_project: @project,
@@ -252,7 +252,7 @@ describe MergeRequests::RefreshService, services: true do
 
       context 'when the merge request is sourced from a different project' do
         it 'creates a `MergeRequestsClosingIssues` record for each issue closed by a commit' do
-          forked_project = create(:project)
+          forked_project = create(:project, :repository)
           create(:forked_project_link, forked_to_project: forked_project, forked_from_project: @project)
 
           merge_request = create(:merge_request,
diff --git a/spec/services/merge_requests/resolve_service_spec.rb b/spec/services/merge_requests/resolve_service_spec.rb
index d33535d22af83a945cb131cc883c8013eec88a94..eaf7785e549e84a45feefc749d256a873910f2ec 100644
--- a/spec/services/merge_requests/resolve_service_spec.rb
+++ b/spec/services/merge_requests/resolve_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe MergeRequests::ResolveService do
   let(:user) { create(:user) }
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
 
   let(:fork_project) do
     create(:forked_project_with_submodules) do |fork_project|
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb
index 7d73c0ea5d0e7dd70ec748ba5b99de9adbc2bc4f..ad3d767f19364c2991e2a85739a51a84daf758d9 100644
--- a/spec/services/merge_requests/update_service_spec.rb
+++ b/spec/services/merge_requests/update_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe MergeRequests::UpdateService, services: true do
   include EmailHelpers
 
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let(:user3) { create(:user) }
diff --git a/spec/services/milestones/close_service_spec.rb b/spec/services/milestones/close_service_spec.rb
index fe6a19e97eafd2a8b3a7a3e715bb6b2a4f9e044e..d581b94ff43d2cfe81e605da177323524917824e 100644
--- a/spec/services/milestones/close_service_spec.rb
+++ b/spec/services/milestones/close_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe Milestones::CloseService, services: true do
   let(:user) { create(:user) }
-  let(:project) { create(:project) }
+  let(:project) { create(:empty_project) }
   let(:milestone) { create(:milestone, title: "Milestone v1.2", project: project) }
 
   before do
diff --git a/spec/services/notes/diff_position_update_service_spec.rb b/spec/services/notes/diff_position_update_service_spec.rb
index 110efb54fa04906fd21fcaf4768e70b039a67b71..d73ae51fbc3b180d16518f9f6ceb227396225ff0 100644
--- a/spec/services/notes/diff_position_update_service_spec.rb
+++ b/spec/services/notes/diff_position_update_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Notes::DiffPositionUpdateService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:create_commit) { project.commit("913c66a37b4a45b9769037c55c2d238bd0942d2e") }
   let(:modify_commit) { project.commit("874797c3a73b60d2187ed6e2fcabd289ff75171e") }
   let(:edit_commit) { project.commit("570e7b2abdd848b95f2f578043fc23bd6f6fd24d") }
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index 229291f19e975938d282122574a1a8b322665d85..5c841843b40639b8b4f9a21c6ae48610bbd119cd 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -372,7 +372,7 @@ describe NotificationService, services: true do
     end
 
     context 'commit note' do
-      let(:project) { create(:project, :public) }
+      let(:project) { create(:project, :public, :repository) }
       let(:note) { create(:note_on_commit, project: project) }
 
       before do
@@ -421,7 +421,7 @@ describe NotificationService, services: true do
     end
 
     context "merge request diff note" do
-      let(:project) { create(:project) }
+      let(:project) { create(:project, :repository) }
       let(:user) { create(:user) }
       let(:merge_request) { create(:merge_request, source_project: project, assignee: user) }
       let(:note) { create(:diff_note_on_merge_request, project: project, noteable: merge_request) }
@@ -849,7 +849,7 @@ describe NotificationService, services: true do
 
   describe 'Merge Requests' do
     let(:group) { create(:group) }
-    let(:project) { create(:project, :public, namespace: group) }
+    let(:project) { create(:project, :public, :repository, namespace: group) }
     let(:another_project) { create(:empty_project, :public, namespace: group) }
     let(:merge_request) { create :merge_request, source_project: project, assignee: create(:user), description: 'cc @participant' }
 
@@ -1161,7 +1161,7 @@ describe NotificationService, services: true do
   end
 
   describe 'Projects' do
-    let(:project) { create :project }
+    let(:project) { create(:empty_project) }
 
     before do
       build_team(project)
@@ -1206,7 +1206,7 @@ describe NotificationService, services: true do
 
   describe 'ProjectMember' do
     describe '#decline_group_invite' do
-      let(:project) { create(:project) }
+      let(:project) { create(:empty_project) }
       let(:member) { create(:user) }
 
       before(:each) do
@@ -1280,7 +1280,7 @@ describe NotificationService, services: true do
 
   describe 'Pipelines' do
     describe '#pipeline_finished' do
-      let(:project) { create(:project, :public) }
+      let(:project) { create(:project, :public, :repository) }
       let(:current_user) { create(:user) }
       let(:u_member) { create(:user) }
       let(:u_other) { create(:user) }
diff --git a/spec/services/projects/destroy_service_spec.rb b/spec/services/projects/destroy_service_spec.rb
index 74bfba44dfd5ee15434495eea1437dafc6f37d8d..b1e10f4562e216fe9b984cc9099cdd7ac220d055 100644
--- a/spec/services/projects/destroy_service_spec.rb
+++ b/spec/services/projects/destroy_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe Projects::DestroyService, services: true do
   let!(:user) { create(:user) }
-  let!(:project) { create(:project, namespace: user.namespace) }
+  let!(:project) { create(:project, :repository, namespace: user.namespace) }
   let!(:path) { project.repository.path_to_repo }
   let!(:remove_path) { path.sub(/\.git\Z/, "+#{project.id}+deleted.git") }
   let!(:async) { false } # execute or async_execute
diff --git a/spec/services/projects/download_service_spec.rb b/spec/services/projects/download_service_spec.rb
index 122a7cea2a1904fd07e41a8deb4e38a909e7df41..33b267c069ca1880b28737b6551521b9cff5cadc 100644
--- a/spec/services/projects/download_service_spec.rb
+++ b/spec/services/projects/download_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
 describe Projects::DownloadService, services: true do
   describe 'File service' do
     before do
-      @user = create :user
-      @project = create :project, creator_id: @user.id, namespace: @user.namespace
+      @user = create(:user)
+      @project = create(:empty_project, creator_id: @user.id, namespace: @user.namespace)
     end
 
     context 'for a URL that is not on whitelist' do
diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb
index e3be1989c93cbbdb7ee497160da8b454c8ce56f8..f8eb34f2ef489cb4f068dd19f84acb2d282be090 100644
--- a/spec/services/projects/fork_service_spec.rb
+++ b/spec/services/projects/fork_service_spec.rb
@@ -7,6 +7,7 @@ describe Projects::ForkService, services: true do
       @from_user = create(:user, namespace: @from_namespace )
       avatar = fixture_file_upload(Rails.root + "spec/fixtures/dk.png", "image/png")
       @from_project = create(:project,
+                             :repository,
                              creator_id: @from_user.id,
                              namespace: @from_namespace,
                              star_count: 107,
@@ -54,7 +55,7 @@ describe Projects::ForkService, services: true do
 
     context 'project already exists' do
       it "fails due to validation, not transaction failure" do
-        @existing_project = create(:project, creator_id: @to_user.id, name: @from_project.name, namespace: @to_namespace)
+        @existing_project = create(:project, :repository, creator_id: @to_user.id, name: @from_project.name, namespace: @to_namespace)
         @to_project = fork_project(@from_project, @to_user)
         expect(@existing_project).to be_persisted
 
@@ -104,9 +105,10 @@ describe Projects::ForkService, services: true do
     before do
       @group_owner = create(:user)
       @developer   = create(:user)
-      @project     = create(:project, creator_id: @group_owner.id,
-                                      star_count: 777,
-                                      description: 'Wow, such a cool project!')
+      @project     = create(:project, :repository,
+                            creator_id: @group_owner.id,
+                            star_count: 777,
+                            description: 'Wow, such a cool project!')
       @group = create(:group)
       @group.add_user(@group_owner, GroupMember::OWNER)
       @group.add_user(@developer,   GroupMember::DEVELOPER)
@@ -139,8 +141,9 @@ describe Projects::ForkService, services: true do
 
     context 'project already exists in group' do
       it 'fails due to validation, not transaction failure' do
-        existing_project = create(:project, name: @project.name,
-                                            namespace: @group)
+        existing_project = create(:project, :repository,
+                                  name: @project.name,
+                                  namespace: @group)
         to_project = fork_project(@project, @group_owner, @opts)
         expect(existing_project.persisted?).to be_truthy
         expect(to_project.errors[:name]).to eq(['has already been taken'])
diff --git a/spec/services/projects/housekeeping_service_spec.rb b/spec/services/projects/housekeeping_service_spec.rb
index 57a5aa5cedc11d22082c932466f73bce98f74fcf..eaf63457b32e7e153630aaa85644d162f132636c 100644
--- a/spec/services/projects/housekeeping_service_spec.rb
+++ b/spec/services/projects/housekeeping_service_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
 
 describe Projects::HousekeepingService do
   subject { Projects::HousekeepingService.new(project) }
-  let(:project) { create :project }
+  let(:project) { create(:project, :repository) }
 
   before do
     project.reset_pushes_since_gc
diff --git a/spec/services/projects/transfer_service_spec.rb b/spec/services/projects/transfer_service_spec.rb
index 5c6fbea8d0e218d2bcd93e7c339d5a9f1bc3a90d..f8187fefc14f85c01682b8ebd8eed77dbbccd79b 100644
--- a/spec/services/projects/transfer_service_spec.rb
+++ b/spec/services/projects/transfer_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe Projects::TransferService, services: true do
   let(:user) { create(:user) }
   let(:group) { create(:group) }
-  let(:project) { create(:project, namespace: user.namespace) }
+  let(:project) { create(:project, :repository, namespace: user.namespace) }
 
   context 'namespace -> namespace' do
     before do
@@ -58,7 +58,7 @@ describe Projects::TransferService, services: true do
     before { internal_group.add_owner(user) }
 
     context 'when namespace visibility level < project visibility level' do
-      let(:public_project) { create(:project, :public, namespace: user.namespace) }
+      let(:public_project) { create(:project, :public, :repository, namespace: user.namespace) }
 
       before { transfer_project(public_project, user, internal_group) }
 
@@ -66,7 +66,7 @@ describe Projects::TransferService, services: true do
     end
 
     context 'when namespace visibility level > project visibility level' do
-      let(:private_project) { create(:project, :private, namespace: user.namespace) }
+      let(:private_project) { create(:project, :private, :repository, namespace: user.namespace) }
 
       before { transfer_project(private_project, user, internal_group) }
 
diff --git a/spec/services/projects/update_pages_service_spec.rb b/spec/services/projects/update_pages_service_spec.rb
index f75fdd9e03f2defde3f06b5e816a3a76bd750e6e..fc0a17296f37f946c1f90eed70bfb87266d0f13d 100644
--- a/spec/services/projects/update_pages_service_spec.rb
+++ b/spec/services/projects/update_pages_service_spec.rb
@@ -1,9 +1,9 @@
 require "spec_helper"
 
 describe Projects::UpdatePagesService do
-  let(:project) { create :project }
-  let(:pipeline) { create :ci_pipeline, project: project, sha: project.commit('HEAD').sha }
-  let(:build) { create :ci_build, pipeline: pipeline, ref: 'HEAD' }
+  let(:project) { create(:project, :repository) }
+  let(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit('HEAD').sha) }
+  let(:build) { create(:ci_build, pipeline: pipeline, ref: 'HEAD') }
   let(:invalid_file) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png') }
 
   subject { described_class.new(project, build) }
diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb
index caa2396251954ee46639376b4090e60cf7c09974..05b18fef061103f5e77abbdc22015f996fd65f46 100644
--- a/spec/services/projects/update_service_spec.rb
+++ b/spec/services/projects/update_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe Projects::UpdateService, services: true do
   let(:user) { create(:user) }
   let(:admin) { create(:admin) }
-  let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
+  let(:project) { create(:empty_project, creator_id: user.id, namespace: user.namespace) }
 
   describe 'update_by_user' do
     context 'when visibility_level is INTERNAL' do
@@ -56,7 +56,7 @@ describe Projects::UpdateService, services: true do
   end
 
   describe 'visibility_level' do
-    let(:project) { create(:project, :internal) }
+    let(:project) { create(:empty_project, :internal) }
     let(:forked_project) { create(:forked_project_with_submodules, :internal) }
 
     before do
diff --git a/spec/services/projects/upload_service_spec.rb b/spec/services/projects/upload_service_spec.rb
index 150c8ccaef75ed8d0d5625cea5118522b71e305b..d2cefa46bfa6eb0402f70b5b3c64d7c97c77e89f 100644
--- a/spec/services/projects/upload_service_spec.rb
+++ b/spec/services/projects/upload_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
 describe Projects::UploadService, services: true do
   describe 'File service' do
     before do
-      @user = create :user
-      @project = create :project, creator_id: @user.id, namespace: @user.namespace
+      @user = create(:user)
+      @project = create(:empty_project, creator_id: @user.id, namespace: @user.namespace)
     end
 
     context 'for valid gif file' do
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index bed1031e40ad9d7c5e5d3bae27abdeadb40abb9f..6ef5fa008aa48cbc3bd8e672e8f3889fbf1a20c4 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -44,7 +44,7 @@ describe 'Search::GlobalService', services: true do
 
       context 'nested group' do
         let!(:nested_group) { create(:group, :nested) }
-        let!(:project) { create(:project, namespace: nested_group) }
+        let!(:project) { create(:empty_project, namespace: nested_group) }
 
         before { project.add_master(user) }
 
diff --git a/spec/services/slash_commands/interpret_service_spec.rb b/spec/services/slash_commands/interpret_service_spec.rb
index 52e8678cb9dddb0202787f5567f0e5d6f3abe712..a63281f0eab7c8057e9985806dd8f7188bb59729 100644
--- a/spec/services/slash_commands/interpret_service_spec.rb
+++ b/spec/services/slash_commands/interpret_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe SlashCommands::InterpretService, services: true do
-  let(:project) { create(:project, :public) }
+  let(:project) { create(:empty_project, :public) }
   let(:developer) { create(:user) }
   let(:issue) { create(:issue, project: project) }
   let(:milestone) { create(:milestone, project: project, title: '9.10') }
@@ -260,6 +260,8 @@ describe SlashCommands::InterpretService, services: true do
     end
 
     shared_examples 'merge command' do
+      let(:project) { create(:project, :repository) }
+
       it 'runs merge command if content contains /merge' do
         _, updates = service.execute(content, issuable)
 
@@ -322,6 +324,7 @@ describe SlashCommands::InterpretService, services: true do
       end
 
       context 'when sha is missing' do
+        let(:project) { create(:project, :repository) }
         let(:service) { described_class.new(project, developer, {}) }
 
         it 'precheck passes and returns merge command' do
@@ -694,7 +697,7 @@ describe SlashCommands::InterpretService, services: true do
     end
 
     context '/target_branch command' do
-      let(:non_empty_project) { create(:project) }
+      let(:non_empty_project) { create(:project, :repository) }
       let(:another_merge_request) { create(:merge_request, author: developer, source_project: non_empty_project) }
       let(:service) { described_class.new(non_empty_project, developer)}
 
diff --git a/spec/services/spam_service_spec.rb b/spec/services/spam_service_spec.rb
index e09c05ccf324594b67f5038823c1ae9dafa231c6..74cba8c014bf2aeffd78a36e1b167b1b2d5d7733 100644
--- a/spec/services/spam_service_spec.rb
+++ b/spec/services/spam_service_spec.rb
@@ -15,7 +15,7 @@ describe SpamService, services: true do
     end
 
     context 'when recaptcha was not verified' do
-      let(:project) { create(:project, :public) }
+      let(:project) { create(:empty_project, :public) }
       let(:issue)   { create(:issue, project: project) }
       let(:request) { double(:request, env: {}) }
 
diff --git a/spec/services/system_hooks_service_spec.rb b/spec/services/system_hooks_service_spec.rb
index 11037a4917b8aa1880e5b19e8a20ffbf9725cc04..667059f230cebf69fe6457f4f57d8519a54f649f 100644
--- a/spec/services/system_hooks_service_spec.rb
+++ b/spec/services/system_hooks_service_spec.rb
@@ -1,13 +1,13 @@
 require 'spec_helper'
 
 describe SystemHooksService, services: true do
-  let(:user)          { create :user }
-  let(:project)       { create :project }
-  let(:project_member) { create :project_member }
-  let(:key)           { create(:key, user: user) }
-  let(:deploy_key)    { create(:key) }
-  let(:group)         { create(:group) }
-  let(:group_member)  { create(:group_member) }
+  let(:user)           { create(:user) }
+  let(:project)        { create(:empty_project) }
+  let(:project_member) { create(:project_member) }
+  let(:key)            { create(:key, user: user) }
+  let(:deploy_key)     { create(:key) }
+  let(:group)          { create(:group) }
+  let(:group_member)   { create(:group_member) }
 
   context 'event data' do
     it { expect(event_data(user, :create)).to include(:event_name, :name, :created_at, :updated_at, :email, :user_id, :username) }
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index 36a17a3bf2ea280205c6fd9bf65c7f7cadda1db6..d7bf4c39cc0f9dcc475b9f3494494eb15c0590b7 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
 describe SystemNoteService, services: true do
   include Gitlab::Routing.url_helpers
 
-  let(:project)  { create(:project) }
+  let(:project)  { create(:empty_project) }
   let(:author)   { create(:user) }
   let(:noteable) { create(:issue, project: project) }
 
@@ -32,6 +32,7 @@ describe SystemNoteService, services: true do
   describe '.add_commits' do
     subject { described_class.add_commits(noteable, project, author, new_commits, old_commits, oldrev) }
 
+    let(:project)     { create(:project, :repository) }
     let(:noteable)    { create(:merge_request, source_project: project) }
     let(:new_commits) { noteable.commits }
     let(:old_commits) { [] }
@@ -216,6 +217,7 @@ describe SystemNoteService, services: true do
   end
 
   describe '.merge_when_pipeline_succeeds' do
+    let(:project)  { create(:project, :repository) }
     let(:pipeline) { build(:ci_pipeline_without_jobs )}
     let(:noteable) do
       create(:merge_request, source_project: project, target_project: project)
@@ -226,11 +228,12 @@ describe SystemNoteService, services: true do
     it_behaves_like 'a system note'
 
     it "posts the 'merge when pipeline succeeds' system note" do
-      expect(subject.note).to match  /enabled an automatic merge when the pipeline for (\w+\/\w+@)?\h{40} succeeds/
+      expect(subject.note).to match(/enabled an automatic merge when the pipeline for (\w+\/\w+@)?\h{40} succeeds/)
     end
   end
 
   describe '.cancel_merge_when_pipeline_succeeds' do
+    let(:project) { create(:project, :repository) }
     let(:noteable) do
       create(:merge_request, source_project: project, target_project: project)
     end
@@ -273,6 +276,8 @@ describe SystemNoteService, services: true do
 
   describe '.change_branch' do
     subject { described_class.change_branch(noteable, project, author, 'target', old_branch, new_branch) }
+
+    let(:project)    { create(:project, :repository) }
     let(:old_branch) { 'old_branch'}
     let(:new_branch) { 'new_branch'}
 
@@ -288,6 +293,8 @@ describe SystemNoteService, services: true do
   describe '.change_branch_presence' do
     subject { described_class.change_branch_presence(noteable, project, author, :source, 'feature', :delete) }
 
+    let(:project) { create(:project, :repository) }
+
     it_behaves_like 'a system note'
 
     context 'when source branch deleted' do
@@ -300,11 +307,13 @@ describe SystemNoteService, services: true do
   describe '.new_issue_branch' do
     subject { described_class.new_issue_branch(noteable, project, author, "1-mepmep") }
 
+    let(:project) { create(:project, :repository) }
+
     it_behaves_like 'a system note'
 
     context 'when a branch is created from the new branch button' do
       it 'sets the note text' do
-        expect(subject.note).to match /\Acreated branch [`1-mepmep`]/
+        expect(subject.note).to start_with("created branch [`1-mepmep`]")
       end
     end
   end
@@ -333,7 +342,7 @@ describe SystemNoteService, services: true do
 
       describe 'note_body' do
         context 'cross-project' do
-          let(:project2)  { create(:project) }
+          let(:project2)  { create(:project, :repository) }
           let(:mentioner) { create(:issue, project: project2) }
 
           context 'from Commit' do
@@ -353,6 +362,7 @@ describe SystemNoteService, services: true do
 
         context 'within the same project' do
           context 'from Commit' do
+            let(:project) { create(:project, :repository) }
             let(:mentioner) { project.repository.commit }
 
             it 'references the mentioning commit' do
@@ -394,6 +404,7 @@ describe SystemNoteService, services: true do
     end
 
     context 'when mentioner is a MergeRequest' do
+      let(:project)   { create(:project, :repository) }
       let(:mentioner) { create(:merge_request, :simple, source_project: project) }
       let(:noteable)  { project.commit }
 
@@ -421,6 +432,7 @@ describe SystemNoteService, services: true do
   end
 
   describe '.cross_reference_exists?' do
+    let(:project) { create(:project, :repository) }
     let(:commit0) { project.commit }
     let(:commit1) { project.commit('HEAD~2') }
 
@@ -513,7 +525,7 @@ describe SystemNoteService, services: true do
   end
 
   describe '.noteable_moved' do
-    let(:new_project) { create(:project) }
+    let(:new_project) { create(:empty_project) }
     let(:new_noteable) { create(:issue, project: new_project) }
 
     subject do
@@ -542,7 +554,7 @@ describe SystemNoteService, services: true do
       it_behaves_like 'cross project mentionable'
 
       it 'notifies about noteable being moved to' do
-        expect(subject.note).to match /moved to/
+        expect(subject.note).to match('moved to')
       end
     end
 
@@ -552,7 +564,7 @@ describe SystemNoteService, services: true do
       it_behaves_like 'cross project mentionable'
 
       it 'notifies about noteable being moved from' do
-        expect(subject.note).to match /moved from/
+        expect(subject.note).to match('moved from')
       end
     end
 
@@ -574,13 +586,13 @@ describe SystemNoteService, services: true do
     end
   end
 
-  include JiraServiceHelper
-
   describe 'JIRA integration' do
+    include JiraServiceHelper
+
     let(:project)         { create(:jira_project) }
     let(:author)          { create(:user) }
     let(:issue)           { create(:issue, project: project) }
-    let(:merge_request)        { create(:merge_request, :simple, target_project: project, source_project: project) }
+    let(:merge_request)   { create(:merge_request, :simple, target_project: project, source_project: project) }
     let(:jira_issue)      { ExternalIssue.new("JIRA-1", project)}
     let(:jira_tracker)    { project.jira_service }
     let(:commit)          { project.commit }
@@ -809,6 +821,7 @@ describe SystemNoteService, services: true do
   end
 
   describe '.add_merge_request_wip_from_commit' do
+    let(:project) { create(:project, :repository) }
     let(:noteable) do
       create(:merge_request, source_project: project, target_project: project)
     end
diff --git a/spec/services/tags/create_service_spec.rb b/spec/services/tags/create_service_spec.rb
index 5478b8c9ec0690f8a9b53d72905fc2f44cd87cdb..b9121b1de499c1d0cfb6317c02dbd949b64dd4f5 100644
--- a/spec/services/tags/create_service_spec.rb
+++ b/spec/services/tags/create_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Tags::CreateService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:repository) { project.repository }
   let(:user) { create(:user) }
   let(:service) { described_class.new(project, user) }
diff --git a/spec/services/tags/destroy_service_spec.rb b/spec/services/tags/destroy_service_spec.rb
index a388c93379a8e1df93b27420ab8270760e6469b9..28396fc36585c310228b9eab3fc5593dfff66e53 100644
--- a/spec/services/tags/destroy_service_spec.rb
+++ b/spec/services/tags/destroy_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe Tags::DestroyService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:repository) { project.repository }
   let(:user) { create(:user) }
   let(:service) { described_class.new(project, user) }
diff --git a/spec/services/test_hook_service_spec.rb b/spec/services/test_hook_service_spec.rb
index 4f6dd8c6d3f1ce4895991c5f092916af7876404e..f99fd8434c229530559095223d17545233c15bab 100644
--- a/spec/services/test_hook_service_spec.rb
+++ b/spec/services/test_hook_service_spec.rb
@@ -1,9 +1,9 @@
 require 'spec_helper'
 
 describe TestHookService, services: true do
-  let(:user)    { create :user }
-  let(:project) { create :project }
-  let(:hook)    { create :project_hook, project: project }
+  let(:user)    { create(:user) }
+  let(:project) { create(:project, :repository) }
+  let(:hook)    { create(:project_hook, project: project) }
 
   describe '#execute' do
     it "executes successfully" do
diff --git a/spec/services/todo_service_spec.rb b/spec/services/todo_service_spec.rb
index 3645b73b039973c397491d15ebf8a670f0985493..f9e432bb216e667794a0f1e76442ed9fa1ff5f21 100644
--- a/spec/services/todo_service_spec.rb
+++ b/spec/services/todo_service_spec.rb
@@ -8,7 +8,7 @@ describe TodoService, services: true do
   let(:guest) { create(:user) }
   let(:admin) { create(:admin) }
   let(:john_doe) { create(:user) }
-  let(:project) { create(:project) }
+  let(:project) { create(:empty_project) }
   let(:mentions) { 'FYI: ' + [author, assignee, john_doe, member, guest, non_member, admin].map(&:to_reference).join(' ') }
   let(:directly_addressed) { [author, assignee, john_doe, member, guest, non_member, admin].map(&:to_reference).join(' ') }
   let(:directly_addressed_and_mentioned) { member.to_reference + ", what do you think? cc: " + [guest, admin].map(&:to_reference).join(' ') }
@@ -99,9 +99,9 @@ describe TodoService, services: true do
       end
 
       context 'when a private group is mentioned' do
-        let(:group) { create :group, :private }
-        let(:project) { create :project, :private, group: group }
-        let(:issue) { create :issue, author: author, project: project, description: group.to_reference }
+        let(:group)   { create(:group, :private) }
+        let(:project) { create(:empty_project, :private, group: group) }
+        let(:issue)   { create(:issue, author: author, project: project, description: group.to_reference) }
 
         before do
           group.add_owner(author)
@@ -422,22 +422,26 @@ describe TodoService, services: true do
         should_create_todo(user: john_doe, target: confidential_issue, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_confidential_issue)
       end
 
-      it 'creates a todo for each valid mentioned user when leaving a note on commit' do
-        service.new_note(note_on_commit, john_doe)
+      context 'on commit' do
+        let(:project)  { create(:project, :repository) }
 
-        should_create_todo(user: member, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
-        should_create_todo(user: author, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
-        should_create_todo(user: john_doe, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
-        should_not_create_todo(user: non_member, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
-      end
+        it 'creates a todo for each valid mentioned user when leaving a note on commit' do
+          service.new_note(note_on_commit, john_doe)
+
+          should_create_todo(user: member, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
+          should_create_todo(user: author, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
+          should_create_todo(user: john_doe, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
+          should_not_create_todo(user: non_member, target_id: nil, target_type: 'Commit', commit_id: note_on_commit.commit_id, author: john_doe, action: Todo::MENTIONED, note: note_on_commit)
+        end
 
-      it 'creates a directly addressed todo for each valid mentioned user when leaving a note on commit' do
-        service.new_note(addressed_note_on_commit, john_doe)
+        it 'creates a directly addressed todo for each valid mentioned user when leaving a note on commit' do
+          service.new_note(addressed_note_on_commit, john_doe)
 
-        should_create_todo(user: member, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
-        should_create_todo(user: author, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
-        should_create_todo(user: john_doe, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
-        should_not_create_todo(user: non_member, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
+          should_create_todo(user: member, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
+          should_create_todo(user: author, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
+          should_create_todo(user: john_doe, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
+          should_not_create_todo(user: non_member, target_id: nil, target_type: 'Commit', commit_id: addressed_note_on_commit.commit_id, author: john_doe, action: Todo::DIRECTLY_ADDRESSED, note: addressed_note_on_commit)
+        end
       end
 
       it 'does not create todo when leaving a note on snippet' do
@@ -720,6 +724,7 @@ describe TodoService, services: true do
     end
 
     describe '#new_note' do
+      let(:project) { create(:project, :repository) }
       let(:mention) { john_doe.to_reference }
       let(:diff_note_on_merge_request) { create(:diff_note_on_merge_request, project: project, noteable: mr_unassigned, author: author, note: "Hey #{mention}") }
       let(:addressed_diff_note_on_merge_request) { create(:diff_note_on_merge_request, project: project, noteable: mr_unassigned, author: author, note: "#{mention}, hey!") }
diff --git a/spec/services/update_release_service_spec.rb b/spec/services/update_release_service_spec.rb
index bba211089a8889d6a52c842b00bf7f6983485d12..69ed8de9c31a5cf586956bbab0126bb63c55fbed 100644
--- a/spec/services/update_release_service_spec.rb
+++ b/spec/services/update_release_service_spec.rb
@@ -1,7 +1,7 @@
 require 'spec_helper'
 
 describe UpdateReleaseService, services: true do
-  let(:project) { create(:project) }
+  let(:project) { create(:project, :repository) }
   let(:user) { create(:user) }
   let(:tag_name) { project.repository.tag_names.first }
   let(:description) { 'Awesome release!' }
diff --git a/spec/services/users/destroy_spec.rb b/spec/services/users/destroy_spec.rb
index 922e82445d09cbd2d564ff63653cccef90e83ce3..9a28c03d96805f20c8251e24dec5d8a9c073dd31 100644
--- a/spec/services/users/destroy_spec.rb
+++ b/spec/services/users/destroy_spec.rb
@@ -5,7 +5,7 @@ describe Users::DestroyService, services: true do
     let!(:user)      { create(:user) }
     let!(:admin)     { create(:admin) }
     let!(:namespace) { create(:namespace, owner: user) }
-    let!(:project)   { create(:project, namespace: namespace) }
+    let!(:project)   { create(:empty_project, namespace: namespace) }
     let(:service)    { described_class.new(admin) }
 
     context 'no options are given' do
@@ -25,7 +25,7 @@ describe Users::DestroyService, services: true do
     end
 
     context "a deleted user's issues" do
-      let(:project) { create :project }
+      let(:project) { create(:project) }
 
       before do
         project.add_developer(user)
diff --git a/spec/services/users/refresh_authorized_projects_service_spec.rb b/spec/services/users/refresh_authorized_projects_service_spec.rb
index 08733d6dcf150dabb6dd8b4a200d57b69d01f7ef..b19374ef1a2d912928acc1985a53ceebbfe04d37 100644
--- a/spec/services/users/refresh_authorized_projects_service_spec.rb
+++ b/spec/services/users/refresh_authorized_projects_service_spec.rb
@@ -152,7 +152,7 @@ describe Users::RefreshAuthorizedProjectsService do
 
     context 'projects of groups the user is a member of' do
       let(:group) { create(:group) }
-      let!(:other_project) { create(:project, group: group) }
+      let!(:other_project) { create(:empty_project, group: group) }
 
       before do
         group.add_owner(user)
@@ -166,7 +166,7 @@ describe Users::RefreshAuthorizedProjectsService do
     context 'projects of subgroups of groups the user is a member of' do
       let(:group) { create(:group) }
       let(:nested_group) { create(:group, parent: group) }
-      let!(:other_project) { create(:project, group: nested_group) }
+      let!(:other_project) { create(:empty_project, group: nested_group) }
 
       before do
         group.add_master(user)
diff --git a/spec/support/services/issuable_create_service_slash_commands_shared_examples.rb b/spec/support/services/issuable_create_service_slash_commands_shared_examples.rb
index 81d06dc2a3dd27372af27d7cf930c6278f17e63a..ee492daee30d9946896e9b9ed1e5df5a85a5574f 100644
--- a/spec/support/services/issuable_create_service_slash_commands_shared_examples.rb
+++ b/spec/support/services/issuable_create_service_slash_commands_shared_examples.rb
@@ -2,7 +2,7 @@
 # It can take a `default_params`.
 
 shared_examples 'new issuable record that supports slash commands' do
-  let!(:project) { create(:project) }
+  let!(:project) { create(:project, :repository) }
   let(:user) { create(:user).tap { |u| project.team << [u, :master] } }
   let(:assignee) { create(:user) }
   let!(:milestone) { create(:milestone, project: project) }