summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-12-04 22:29:17 +0100
committerKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2017-12-07 16:46:27 +0100
commit438aa7883e97e82cf8e9c5d78af5e691c1951a45 (patch)
tree82a0130b0b18b5b14eb4cc5f0b19f522257c171e
parenta898714c7f73e7f7e788d2e9ff51f275a44414ae (diff)
downloadgitlab-ce-gitaly-795-migrate-repository-fsck.tar.gz
Migrate Git::Repository#fsck to Gitalygitaly-795-migrate-repository-fsck
-rw-r--r--GITALY_SERVER_VERSION2
-rw-r--r--lib/gitlab/git/repository.rb25
-rw-r--r--lib/gitlab/gitaly_client/repository_service.rb11
3 files changed, 35 insertions, 3 deletions
diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION
index 46448c71b9d..a60476bfe1c 100644
--- a/GITALY_SERVER_VERSION
+++ b/GITALY_SERVER_VERSION
@@ -1 +1 @@
-0.57.0
+0.58.0
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index 91dd2fbbdbc..e7721f39cab 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -1160,9 +1160,15 @@ module Gitlab
end
def fsck
- output, status = run_git(%W[--git-dir=#{path} fsck], nice: true)
+ gitaly_migrate(:git_fsck) do |is_enabled|
+ msg, status = if is_enabled
+ gitaly_fsck
+ else
+ shell_fsck
+ end
- raise GitError.new("Could not fsck repository:\n#{output}") unless status.zero?
+ raise GitError.new("Could not fsck repository: #{msg}") unless status.zero?
+ end
end
def rebase(user, rebase_id, branch:, branch_sha:, remote_repository:, remote_branch:)
@@ -1310,6 +1316,21 @@ module Gitlab
File.write(File.join(worktree_info_path, 'sparse-checkout'), files)
end
+ def fsck_gitaly
+ response = gitaly_repository_client.fsck
+ unless response.error.empty?
+ raise GitError.new("Could not fsck repository:\n#{response.error}")
+ end
+ end
+
+ def gitaly_fsck
+ gitaly_repository_client.fsck
+ end
+
+ def shell_fsck
+ run_git(%W[--git-dir=#{path} fsck], nice: true)
+ end
+
def rugged_fetch_source_branch(source_repository, source_branch, local_ref)
with_repo_branch_commit(source_repository, source_branch) do |commit|
if commit
diff --git a/lib/gitlab/gitaly_client/repository_service.rb b/lib/gitlab/gitaly_client/repository_service.rb
index b9e606592d7..2724d0bfb4e 100644
--- a/lib/gitlab/gitaly_client/repository_service.rb
+++ b/lib/gitlab/gitaly_client/repository_service.rb
@@ -87,6 +87,17 @@ module Gitlab
response.result
end
+
+ def fsck
+ request = Gitaly::FsckRequest.new(repository: @gitaly_repo)
+ response = GitalyClient.call(@storage, :repository_service, :fsck, request)
+
+ if response.error.empty?
+ return "", 0
+ end
+
+ return response.error.b, 1
+ end
end
end
end