diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-07-09 09:59:51 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-07-09 09:59:51 +0000 |
commit | 090f4d9e9f409c76bd5a8738a1b39b1366845590 (patch) | |
tree | e518b8b29c2c46c8112af992a78a2258b8d58321 /lib | |
parent | 4f6beb5571f0bd920f0670a703be4274e7524f2f (diff) | |
parent | c770d2f96e222ecb7a11b04e8b9dd3b0ebf6b794 (diff) | |
download | gitlab-ce-090f4d9e9f409c76bd5a8738a1b39b1366845590.tar.gz |
Merge branch 'gitaly-mandatory-20180706-jv' into 'master'
Remove gitaly_list_commits_by_oid, gitaly_commit_deltas, gitaly_create_repository flags
Closes gitaly#593, gitaly#566, and gitaly#670
See merge request gitlab-org/gitlab-ce!20432
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/commit.rb | 18 | ||||
-rw-r--r-- | lib/gitlab/git/repository.rb | 29 | ||||
-rwxr-xr-x | lib/gitlab/git/support/format-git-cat-file-input | 21 | ||||
-rw-r--r-- | lib/gitlab/shell.rb | 21 |
4 files changed, 12 insertions, 77 deletions
diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb index 36d56e411d8..4e2d817d12c 100644 --- a/lib/gitlab/git/commit.rb +++ b/lib/gitlab/git/commit.rb @@ -164,13 +164,8 @@ module Gitlab # relation to each other. The last 10 commits for a branch for example, # should go through .where def batch_by_oid(repo, oids) - repo.gitaly_migrate(:list_commits_by_oid, - status: Gitlab::GitalyClient::MigrationStatus::OPT_OUT) do |is_enabled| - if is_enabled - repo.gitaly_commit_client.list_commits_by_oid(oids) - else - oids.map { |oid| find(repo, oid) }.compact - end + repo.wrapped_gitaly_errors do + repo.gitaly_commit_client.list_commits_by_oid(oids) end end @@ -289,14 +284,7 @@ module Gitlab def deltas @deltas ||= begin - deltas = Gitlab::GitalyClient.migrate(:commit_deltas) do |is_enabled| - if is_enabled - @repository.gitaly_commit_client.commit_deltas(self) - else - rugged_diff_from_parent.each_delta - end - end - + deltas = @repository.gitaly_commit_client.commit_deltas(self) deltas.map { |delta| Gitlab::Git::Diff.new(delta) } end end diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index 6f0632addfa..b355e5e87ff 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -1862,35 +1862,6 @@ module Gitlab def sha_from_ref(ref) rev_parse_target(ref).oid end - - def build_git_cmd(*args) - object_directories = alternate_object_directories.join(File::PATH_SEPARATOR) - - env = { 'PWD' => self.path } - env['GIT_ALTERNATE_OBJECT_DIRECTORIES'] = object_directories if object_directories.present? - - [ - env, - ::Gitlab.config.git.bin_path, - *args, - { chdir: self.path } - ] - end - - def git_diff_cmd(old_rev, new_rev) - old_rev = old_rev == ::Gitlab::Git::BLANK_SHA ? ::Gitlab::Git::EMPTY_TREE_ID : old_rev - - build_git_cmd('diff', old_rev, new_rev, '--raw') - end - - def git_cat_file_cmd - format = '%(objectname) %(objectsize) %(rest)' - build_git_cmd('cat-file', "--batch-check=#{format}") - end - - def format_git_cat_file_script - File.expand_path('../support/format-git-cat-file-input', __FILE__) - end end end end diff --git a/lib/gitlab/git/support/format-git-cat-file-input b/lib/gitlab/git/support/format-git-cat-file-input deleted file mode 100755 index 2e93c646d0f..00000000000 --- a/lib/gitlab/git/support/format-git-cat-file-input +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env ruby - -# This script formats the output of the `git diff <old_rev> <new_rev> --raw` -# command so it can be processed by `git cat-file` - -# We need to convert this: -# ":100644 100644 5f53439... 85bc2f9... R060\tfiles/js/commit.js.coffee\tfiles/js/commit.coffee" -# To: -# "85bc2f9 R\tfiles/js/commit.js.coffee\tfiles/js/commit.coffee" - -ARGF.each do |line| - _, _, old_blob_id, new_blob_id, rest = line.split(/\s/, 5) - - old_blob_id.gsub!(/[^\h]/, '') - new_blob_id.gsub!(/[^\h]/, '') - - # We can't pass '0000000...' to `git cat-file` given it will not return info about the deleted file - blob_id = new_blob_id =~ /\A0+\z/ ? old_blob_id : new_blob_id - - $stdout.puts "#{blob_id} #{rest}" -end diff --git a/lib/gitlab/shell.rb b/lib/gitlab/shell.rb index 5cedd9e84c2..e222541992a 100644 --- a/lib/gitlab/shell.rb +++ b/lib/gitlab/shell.rb @@ -74,17 +74,10 @@ module Gitlab relative_path = name.dup relative_path << '.git' unless relative_path.end_with?('.git') - gitaly_migrate(:create_repository, - status: Gitlab::GitalyClient::MigrationStatus::OPT_OUT) do |is_enabled| - if is_enabled - repository = Gitlab::Git::Repository.new(storage, relative_path, '') - repository.gitaly_repository_client.create_repository - true - else - repo_path = File.join(Gitlab.config.repositories.storages[storage].legacy_disk_path, relative_path) - Gitlab::Git::Repository.create(repo_path, bare: true, symlink_hooks_to: gitlab_shell_hooks_path) - end - end + repository = Gitlab::Git::Repository.new(storage, relative_path, '') + wrapped_gitaly_errors { repository.gitaly_repository_client.create_repository } + + true rescue => err # Once the Rugged codes gets removes this can be improved Rails.logger.error("Failed to add repository #{storage}/#{name}: #{err}") false @@ -448,7 +441,11 @@ module Gitlab end def gitaly_migrate(method, status: Gitlab::GitalyClient::MigrationStatus::OPT_IN, &block) - Gitlab::GitalyClient.migrate(method, status: status, &block) + wrapped_gitaly_errors { Gitlab::GitalyClient.migrate(method, status: status, &block) } + end + + def wrapped_gitaly_errors + yield rescue GRPC::NotFound, GRPC::BadStatus => e # Old Popen code returns [Error, output] to the caller, so we # need to do the same here... |