diff options
| author | Andrew Newdigate <andrew@gitlab.com> | 2017-08-24 09:20:04 +0000 |
|---|---|---|
| committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-08-24 09:20:04 +0000 |
| commit | fb49c94e49149a2043b774ba33daa3fe79febdd4 (patch) | |
| tree | e0f1fd8d5b716baec66287116d0b1529cfdca0bb /lib | |
| parent | 7ab4efa8f8c1c1c0b80684d13bfbb777485f1199 (diff) | |
| download | gitlab-ce-fb49c94e49149a2043b774ba33daa3fe79febdd4.tar.gz | |
Delegate Repository::branch_exists? and ref_exists? to Gitlab::Git
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/gitlab/git/repository.rb | 23 | ||||
| -rw-r--r-- | lib/gitlab/gitaly_client/ref_service.rb | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index f5747951d5e..860ed01c05d 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -201,6 +201,19 @@ module Gitlab end end + # Returns true if the given ref name exists + # + # Ref names must start with `refs/`. + def ref_exists?(ref_name) + gitaly_migrate(:ref_exists) do |is_enabled| + if is_enabled + gitaly_ref_exists?(ref_name) + else + rugged_ref_exists?(ref_name) + end + end + end + # Returns true if the given tag exists # # name - The name of the tag as a String. @@ -992,6 +1005,16 @@ module Gitlab # Returns true if the given ref name exists # # Ref names must start with `refs/`. + def rugged_ref_exists?(ref_name) + raise ArgumentError, 'invalid refname' unless ref_name.start_with?('refs/') + rugged.references.exist?(ref_name) + rescue Rugged::ReferenceError + false + end + + # Returns true if the given ref name exists + # + # Ref names must start with `refs/`. def gitaly_ref_exists?(ref_name) gitaly_ref_client.ref_exists?(ref_name) end diff --git a/lib/gitlab/gitaly_client/ref_service.rb b/lib/gitlab/gitaly_client/ref_service.rb index cdcfed36740..8c0008c6971 100644 --- a/lib/gitlab/gitaly_client/ref_service.rb +++ b/lib/gitlab/gitaly_client/ref_service.rb @@ -71,7 +71,7 @@ module Gitlab end def ref_exists?(ref_name) - request = Gitaly::RefExistsRequest.new(repository: @gitaly_repo, ref: ref_name) + request = Gitaly::RefExistsRequest.new(repository: @gitaly_repo, ref: GitalyClient.encode(ref_name)) response = GitalyClient.call(@storage, :ref_service, :ref_exists, request) response.value rescue GRPC::InvalidArgument => e |
