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

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmad Sherif <ahmad.m.sherif@gmail.com>2018-03-16 02:31:03 +0300
committerAhmad Sherif <ahmad.m.sherif@gmail.com>2018-03-16 02:31:03 +0300
commit1882d71eeabd58894860b6176f51836d5634e8e4 (patch)
treeb7034857d4d696ff3ce258070f446593dc213deb
parentdb8b9e4331be2e4044455724626100267a8a8b53 (diff)
parent2ce237ad11db1ecb9f68d8d34e480fc4c7c05b38 (diff)
Merge branch 'bench-shell-has-local-branches' into 'master'
Rewrite Repo::HasLocalBranches in Go See merge request gitlab-org/gitaly!629
-rw-r--r--CHANGELOG.md2
-rw-r--r--internal/service/repository/repository.go24
-rw-r--r--ruby/lib/gitaly_server/repository_service.rb6
3 files changed, 20 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c3216c15..c1ac74637 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
UNRELEASED
+- Rewrite RepositoryService.HasLocalBranches in Go
+ https://gitlab.com/gitlab-org/gitaly/merge_requests/629
- Rewrite RepositoryService.MergeBase in Go
https://gitlab.com/gitlab-org/gitaly/merge_requests/632
- Encode OperationsService errors in UTF-8 before sending them
diff --git a/internal/service/repository/repository.go b/internal/service/repository/repository.go
index 726b04f0b..27ae78b83 100644
--- a/internal/service/repository/repository.go
+++ b/internal/service/repository/repository.go
@@ -1,11 +1,15 @@
package repository
import (
+ "io/ioutil"
+
"golang.org/x/net/context"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
pb "gitlab.com/gitlab-org/gitaly-proto/go"
+ "gitlab.com/gitlab-org/gitaly/internal/git"
"gitlab.com/gitlab-org/gitaly/internal/helper"
- "gitlab.com/gitlab-org/gitaly/internal/rubyserver"
)
// Deprecated
@@ -23,15 +27,23 @@ func (s *server) RepositoryExists(ctx context.Context, in *pb.RepositoryExistsRe
}
func (s *server) HasLocalBranches(ctx context.Context, in *pb.HasLocalBranchesRequest) (*pb.HasLocalBranchesResponse, error) {
- client, err := s.RepositoryServiceClient(ctx)
+ args := []string{"for-each-ref", "--count=1", "refs/heads"}
+ cmd, err := git.Command(ctx, in.GetRepository(), args...)
if err != nil {
- return nil, err
+ if _, ok := status.FromError(err); ok {
+ return nil, err
+ }
+ return nil, status.Errorf(codes.Internal, "HasLocalBranches: gitCommand: %v", err)
}
- clientCtx, err := rubyserver.SetHeaders(ctx, in.GetRepository())
+ buff, err := ioutil.ReadAll(cmd)
if err != nil {
- return nil, err
+ return nil, status.Errorf(codes.Internal, "HasLocalBranches: read: %v", err)
+ }
+
+ if err := cmd.Wait(); err != nil {
+ return nil, status.Errorf(codes.Internal, "HasLocalBranches: cmd wait: %v", err)
}
- return client.HasLocalBranches(clientCtx, in)
+ return &pb.HasLocalBranchesResponse{Value: len(buff) > 0}, nil
}
diff --git a/ruby/lib/gitaly_server/repository_service.rb b/ruby/lib/gitaly_server/repository_service.rb
index cddb4e351..baec95884 100644
--- a/ruby/lib/gitaly_server/repository_service.rb
+++ b/ruby/lib/gitaly_server/repository_service.rb
@@ -14,12 +14,6 @@ module GitalyServer
end
end
- def has_local_branches(request, call) # rubocop:disable Naming/PredicateName
- repo = Gitlab::Git::Repository.from_gitaly(request.repository, call)
-
- Gitaly::HasLocalBranchesResponse.new(value: repo.has_local_branches?)
- end
-
def fetch_source_branch(request, call)
bridge_exceptions do
source_repository = Gitlab::Git::GitalyRemoteRepository.new(request.source_repository, call)