diff options
author | Kim "BKC" Carlbäcker <kim.carlbacker@gmail.com> | 2017-12-04 22:29:17 +0100 |
---|---|---|
committer | Kim "BKC" Carlbäcker <kim.carlbacker@gmail.com> | 2017-12-07 16:46:27 +0100 |
commit | 438aa7883e97e82cf8e9c5d78af5e691c1951a45 (patch) | |
tree | 82a0130b0b18b5b14eb4cc5f0b19f522257c171e | |
parent | a898714c7f73e7f7e788d2e9ff51f275a44414ae (diff) | |
download | gitlab-ce-gitaly-795-migrate-repository-fsck.tar.gz |
Migrate Git::Repository#fsck to Gitalygitaly-795-migrate-repository-fsck
-rw-r--r-- | GITALY_SERVER_VERSION | 2 | ||||
-rw-r--r-- | lib/gitlab/git/repository.rb | 25 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/repository_service.rb | 11 |
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 |