gitlab-org--gitlab-foss/app/services
Douwe Maan 4e63411daa Merge branch 'adam-build-missing-services-when-necessary' into 'master'
Defer saving project services to the database if there are no user changes

## What does this MR do?

It defers saving project services to the database as long as it is possible. It creates a project service when creating a project only if this project service has an active template. After that project services are saved on the first edit.

## Are there points in the code the reviewer needs to double check?

- tests that used `build_missing_services` before the change
- number of queries executed

## Why was this MR needed?

Motivation in #22281

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- Tests
  - [x] Added for this feature/bug
  - [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?

Fixes #22281

See merge request !6958
2016-11-16 16:27:54 +00:00
..
auth Merge branch 'unauthenticated-container-registry-access' into 'security' 2016-11-09 12:28:29 +01:00
boards Rename Labels::CreateService to Labels::FindOrCreateService 2016-10-19 14:58:28 -02:00
ci Merge remote-tracking branch 'upstream/master' into pipeline-notifications 2016-11-02 16:18:21 +08:00
commits Reduce duplication in Commits::{CherryPickService,RevertService} 2016-09-15 16:30:27 +02:00
files multi-file commit 2016-10-05 17:42:52 +00:00
groups
issuable Add bulk update support for merge requests list 2016-09-08 11:52:20 +03:00
issues Process commits in a separate worker 2016-11-07 13:11:44 +01:00
labels Pass user instance to Labels::FindOrCreateService or skip_authorization: true 2016-10-28 11:31:45 +02:00
members Implement CreateMembers service to make controller thin 2016-11-01 10:17:04 +02:00
merge_requests Do not create a MergeRequestDiff record when source branch is deleted 2016-11-16 11:33:20 +01:00
milestones Ensure validation messages are shown within the milestone form 2016-09-19 09:29:12 +01:00
notes Does not raise error when Note not found when processing NewNoteWorker 2016-11-11 22:54:11 -02:00
oauth2
projects Merge branch 'adam-build-missing-services-when-necessary' into 'master' 2016-11-16 16:27:54 +00:00
protected_branches Implement third round of review comments from @DouweM. 2016-10-24 11:33:38 +05:30
search
slash_commands Add support to group labels to SlashCommands::InterpretService 2016-10-19 14:58:27 -02:00
wiki_pages
akismet_service.rb Reduce duplication in AkismetService 2016-09-20 08:19:32 +03:00
audit_event_service.rb
base_service.rb multi-file commit 2016-10-05 17:42:52 +00:00
compare_service.rb Refactor straight compare diff code 2016-10-12 16:32:57 +03:00
create_branch_service.rb
create_deployment_service.rb Fix environments specs 2016-10-17 21:06:10 +02:00
create_release_service.rb
create_snippet_service.rb
create_tag_service.rb
delete_branch_service.rb Fix lightweight tags not processed correctly by GitTagPushService 2016-10-28 13:53:18 -03:00
delete_merged_branches_service.rb Add button to delete all merged branches 2016-11-09 21:04:03 +01:00
delete_tag_service.rb Fix lightweight tags not processed correctly by GitTagPushService 2016-10-28 13:53:18 -03:00
delete_user_service.rb
destroy_group_service.rb
event_create_service.rb Differentiate the expire from leave event 2016-10-20 00:26:45 +00:00
git_hooks_service.rb
git_push_service.rb Process commits in a separate worker 2016-11-07 13:11:44 +01:00
git_tag_push_service.rb Fix lightweight tags not processed correctly by GitTagPushService 2016-10-28 13:53:18 -03:00
gravatar_service.rb
ham_service.rb
import_export_clean_up_service.rb
issuable_base_service.rb Rename Labels::CreateService to Labels::FindOrCreateService 2016-10-19 14:58:28 -02:00
notification_service.rb Well pusher's privilege for read_build could be removed 2016-10-22 01:11:59 +08:00
repair_ldap_blocked_user_service.rb
repository_archive_clean_up_service.rb
spam_service.rb
system_hooks_service.rb Enable Lint/StringConversionInInterpolation cop and autocorrect offenses 2016-10-03 16:09:57 +02:00
system_note_service.rb Use SELECT 1, instead SELECT COUNT(*) to ask for notes existency 2016-10-04 10:45:49 +02:00
test_hook_service.rb
todo_service.rb Make guests unable to view MRs 2016-10-11 16:51:26 +03:00
update_release_service.rb
update_snippet_service.rb
user_agent_detail_service.rb