summaryrefslogtreecommitdiff
path: root/app/workers
diff options
context:
space:
mode:
authorToon Claes <toon@gitlab.com>2018-04-23 12:09:38 +0200
committerToon Claes <toon@gitlab.com>2018-05-07 09:42:09 +0200
commitf70d7e4ea03f004a74c514f4edf1659329bdc9f6 (patch)
treed3beccce8faf52edfa7d5083c544f55a834b5872 /app/workers
parentb07c4e3dc454fb90c320b3912ef84da06cd56ddf (diff)
downloadgitlab-ce-f70d7e4ea03f004a74c514f4edf1659329bdc9f6.tar.gz
Refactor RepositoryCheck::SingleRepositoryWorker
A repo does not need pushes before it will be repo-checked. There are other sources where commits can come from (e.g. import or webIDE). In the test I made the method of breaking a repo more robust. And added a few test examples. See also gitlab-org/gitlab-ce#45046.
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/repository_check/single_repository_worker.rb30
1 files changed, 18 insertions, 12 deletions
diff --git a/app/workers/repository_check/single_repository_worker.rb b/app/workers/repository_check/single_repository_worker.rb
index 116bc185b38..34b56fc6092 100644
--- a/app/workers/repository_check/single_repository_worker.rb
+++ b/app/workers/repository_check/single_repository_worker.rb
@@ -14,18 +14,24 @@ module RepositoryCheck
private
def check(project)
- if has_pushes?(project) && !git_fsck(project.repository)
- false
- elsif project.wiki_enabled?
- # Historically some projects never had their wiki repos initialized;
- # this happens on project creation now. Let's initialize an empty repo
- # if it is not already there.
- project.create_wiki
-
- git_fsck(project.wiki.repository)
- else
- true
- end
+ check_repo(project) && check_wiki_repo(project)
+ end
+
+ def check_repo(project)
+ return true if project.empty_repo?
+
+ git_fsck(project.repository)
+ end
+
+ def check_wiki_repo(project)
+ return true unless project.wiki_enabled?
+
+ # Historically some projects never had their wiki repos initialized;
+ # this happens on project creation now. Let's initialize an empty repo
+ # if it is not already there.
+ project.create_wiki
+
+ git_fsck(project.wiki.repository)
end
def git_fsck(repository)