Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/git')
-rw-r--r--lib/gitlab/git/remote_repository.rb72
-rw-r--r--lib/gitlab/git/repository.rb15
-rw-r--r--lib/gitlab/git/rugged_impl/use_rugged.rb1
3 files changed, 15 insertions, 73 deletions
diff --git a/lib/gitlab/git/remote_repository.rb b/lib/gitlab/git/remote_repository.rb
deleted file mode 100644
index 0ea009930b0..00000000000
--- a/lib/gitlab/git/remote_repository.rb
+++ /dev/null
@@ -1,72 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Git
- #
- # When a Gitaly call involves two repositories instead of one we cannot
- # assume that both repositories are on the same Gitaly server. In this
- # case we need to make a distinction between the repository that the
- # call is being made on (a Repository instance), and the "other"
- # repository (a RemoteRepository instance). This is the reason why we
- # have the RemoteRepository class in Gitlab::Git.
- #
- # When you make changes, be aware that gitaly-ruby sub-classes this
- # class.
- #
- class RemoteRepository
- attr_reader :relative_path, :gitaly_repository
-
- def initialize(repository)
- @relative_path = repository.relative_path
- @gitaly_repository = repository.gitaly_repository
-
- # These instance variables will not be available in gitaly-ruby, where
- # we have no disk access to this repository.
- @repository = repository
- end
-
- def empty?
- # We will override this implementation in gitaly-ruby because we cannot
- # use '@repository' there.
- #
- # Caches and memoization used on the Rails side
- !@repository.exists? || @repository.empty?
- end
-
- def commit_id(revision)
- # We will override this implementation in gitaly-ruby because we cannot
- # use '@repository' there.
- @repository.commit(revision)&.sha
- end
-
- def branch_exists?(name)
- # We will override this implementation in gitaly-ruby because we cannot
- # use '@repository' there.
- @repository.branch_exists?(name)
- end
-
- # Compares self to a Gitlab::Git::Repository. This implementation uses
- # 'self.gitaly_repository' so that it will also work in the
- # GitalyRemoteRepository subclass defined in gitaly-ruby.
- def same_repository?(other_repository)
- gitaly_repository.storage_name == other_repository.storage &&
- gitaly_repository.relative_path == other_repository.relative_path
- end
-
- def path
- @repository.path
- end
-
- private
-
- # Must return an object that responds to 'address' and 'storage'.
- def gitaly_client
- Gitlab::GitalyClient
- end
-
- def storage
- gitaly_repository.storage_name
- end
- end
- end
-end
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index d7f892ae9d9..ad655fedb6d 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -135,6 +135,13 @@ module Gitlab
gitaly_ref_client.find_tag(name)
end
rescue CommandError
+ # Gitaly used to return an `Internal` error in case the tag wasn't found, which is being translated to
+ # `CommandError` by the wrapper. This has been converted in v15.3.0 to instead return a structured
+ # error with a `tag_not_found` error, so rescuing from `Internal` errors can be removed in v15.4.0 and
+ # later.
+ rescue Gitlab::Git::UnknownRef
+ # This is the new error returned by `find_tag`, which knows to translate the structured error returned
+ # by Gitaly when the tag does not exist.
end
def local_branches(sort_by: nil, pagination_params: nil)
@@ -910,7 +917,7 @@ module Gitlab
def multi_action(
user, branch_name:, message:, actions:,
author_email: nil, author_name: nil,
- start_branch_name: nil, start_sha: nil, start_repository: self,
+ start_branch_name: nil, start_sha: nil, start_repository: nil,
force: false)
wrapped_gitaly_errors do
@@ -930,6 +937,12 @@ module Gitlab
gitaly_repository_client.set_full_path(full_path)
end
+ def full_path
+ wrapped_gitaly_errors do
+ gitaly_repository_client.full_path
+ end
+ end
+
def disconnect_alternates
wrapped_gitaly_errors do
gitaly_repository_client.disconnect_alternates
diff --git a/lib/gitlab/git/rugged_impl/use_rugged.rb b/lib/gitlab/git/rugged_impl/use_rugged.rb
index dae208e6955..632b4133f2e 100644
--- a/lib/gitlab/git/rugged_impl/use_rugged.rb
+++ b/lib/gitlab/git/rugged_impl/use_rugged.rb
@@ -10,6 +10,7 @@ module Gitlab
# Disable Rugged auto-detect(can_use_disk?) when Puma threads>1
# https://gitlab.com/gitlab-org/gitlab/issues/119326
return false if running_puma_with_multiple_threads?
+ return false if Feature.enabled?(:skip_rugged_auto_detect, type: :ops)
Gitlab::GitalyClient.can_use_disk?(repo.storage)
end