summaryrefslogtreecommitdiff
path: root/lib/gitlab
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2017-11-20 15:20:40 +0000
committerDouwe Maan <douwe@gitlab.com>2017-11-20 15:20:40 +0000
commit4b78f70fc4c9b7f807db497e4ced12a92744bc3e (patch)
treeb69c51196a99892f35a68ed996238b478ab972e6 /lib/gitlab
parent9414bb00c40bb0fe157057dec497bc70df6db11e (diff)
parent38730a2d07c1b956ec578d090b3019a574ac5cca (diff)
downloadgitlab-ce-4b78f70fc4c9b7f807db497e4ced12a92744bc3e.tar.gz
Merge branch 'gitaly-delete-refs' into 'master'
Incorporate Gitaly's RefService.DeleteRefs RPC Closes gitaly#740 See merge request gitlab-org/gitlab-ce!15460
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/git/repository.rb8
-rw-r--r--lib/gitlab/gitaly_client/ref_service.rb9
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index ab3892dd50d..0c522deb6fa 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -304,7 +304,13 @@ module Gitlab
end
def delete_all_refs_except(prefixes)
- delete_refs(*all_ref_names_except(prefixes))
+ gitaly_migrate(:ref_delete_refs) do |is_enabled|
+ if is_enabled
+ gitaly_ref_client.delete_refs(except_with_prefixes: prefixes)
+ else
+ delete_refs(*all_ref_names_except(prefixes))
+ end
+ end
end
# Returns an Array of all ref names, except when it's matching pattern
diff --git a/lib/gitlab/gitaly_client/ref_service.rb b/lib/gitlab/gitaly_client/ref_service.rb
index e8a2215959d..31b04bc2650 100644
--- a/lib/gitlab/gitaly_client/ref_service.rb
+++ b/lib/gitlab/gitaly_client/ref_service.rb
@@ -126,6 +126,15 @@ module Gitlab
GitalyClient.call(@repository.storage, :ref_service, :delete_branch, request)
end
+ def delete_refs(except_with_prefixes:)
+ request = Gitaly::DeleteRefsRequest.new(
+ repository: @gitaly_repo,
+ except_with_prefix: except_with_prefixes
+ )
+
+ GitalyClient.call(@repository.storage, :ref_service, :delete_refs, request)
+ end
+
private
def consume_refs_response(response)