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:
authorAlejandro Rodríguez <alejorro70@gmail.com>2017-09-11 23:33:12 +0300
committerAhmad Sherif <me@ahmadsherif.com>2017-09-25 13:19:55 +0300
commit9917de7dd7c05ace29d60372e7b5bcba52bbfaf7 (patch)
tree1a7a475234fe6f0749de7869e1454d908cae6e43
parentd33b66b74c1edb8fc9bb7e01e0154218c99ff1b8 (diff)
Implement RepositoryService.UserCreateBranch
-rw-r--r--CHANGELOG.md2
-rw-r--r--internal/rubyserver/rubyserver.go6
-rw-r--r--internal/service/operations/branches.go23
-rw-r--r--internal/service/operations/branches_test.go228
-rw-r--r--internal/service/operations/server.go6
-rw-r--r--internal/testhelper/testhelper.go6
-rw-r--r--ruby/Gemfile2
-rw-r--r--ruby/Gemfile.lock6
-rw-r--r--ruby/lib/gitaly_server.rb9
-rw-r--r--ruby/lib/gitaly_server/operations_service.rb22
-rw-r--r--ruby/lib/gitlab/git.rb7
-rw-r--r--vendor/gitlab.com/gitlab-org/gitaly-proto/go/VERSION2
-rw-r--r--vendor/gitlab.com/gitlab-org/gitaly-proto/go/blob.pb.go2
-rw-r--r--vendor/gitlab.com/gitlab-org/gitaly-proto/go/operations.pb.go134
-rw-r--r--vendor/vendor.json10
15 files changed, 421 insertions, 44 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 516ef0a4d..e5a840b73 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,8 @@ UNRELEASED
https://gitlab.com/gitlab-org/gitaly/merge_requests/365
- Remove support for legacy services not ending in 'Service'
https://gitlab.com/gitlab-org/gitaly/merge_requests/363
+- Implement RepositoryService.UserCreateBranch
+ https://gitlab.com/gitlab-org/gitaly/merge_requests/344
v0.40.0
- Use context cancellation instead of command.Close
diff --git a/internal/rubyserver/rubyserver.go b/internal/rubyserver/rubyserver.go
index 0470019b2..434add1c3 100644
--- a/internal/rubyserver/rubyserver.go
+++ b/internal/rubyserver/rubyserver.go
@@ -27,7 +27,8 @@ import (
)
const (
- repoPathHeader = "gitaly-repo-path"
+ repoPathHeader = "gitaly-repo-path"
+ glRepositoryHeader = "gitaly-gl-repository"
)
var (
@@ -199,7 +200,8 @@ func SetHeaders(ctx context.Context, repo *pb.Repository) (context.Context, erro
return nil, err
}
- newCtx := metadata.NewOutgoingContext(ctx, metadata.Pairs(repoPathHeader, repoPath))
+ md := metadata.Pairs(repoPathHeader, repoPath, glRepositoryHeader, repo.GlRepository)
+ newCtx := metadata.NewOutgoingContext(ctx, md)
return newCtx, nil
}
diff --git a/internal/service/operations/branches.go b/internal/service/operations/branches.go
new file mode 100644
index 000000000..2a7345f39
--- /dev/null
+++ b/internal/service/operations/branches.go
@@ -0,0 +1,23 @@
+package operations
+
+import (
+ "gitlab.com/gitlab-org/gitaly/internal/rubyserver"
+
+ pb "gitlab.com/gitlab-org/gitaly-proto/go"
+
+ "golang.org/x/net/context"
+)
+
+func (s *server) UserCreateBranch(ctx context.Context, req *pb.UserCreateBranchRequest) (*pb.UserCreateBranchResponse, error) {
+ client, err := s.OperationServiceClient(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ clientCtx, err := rubyserver.SetHeaders(ctx, req.GetRepository())
+ if err != nil {
+ return nil, err
+ }
+
+ return client.UserCreateBranch(clientCtx, req)
+}
diff --git a/internal/service/operations/branches_test.go b/internal/service/operations/branches_test.go
new file mode 100644
index 000000000..80ce8045a
--- /dev/null
+++ b/internal/service/operations/branches_test.go
@@ -0,0 +1,228 @@
+package operations
+
+import (
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "path"
+ "testing"
+
+ "google.golang.org/grpc/codes"
+
+ "github.com/stretchr/testify/require"
+ "gitlab.com/gitlab-org/gitaly/internal/git/log"
+ "gitlab.com/gitlab-org/gitaly/internal/testhelper"
+ "golang.org/x/net/context"
+
+ pb "gitlab.com/gitlab-org/gitaly-proto/go"
+)
+
+func TestSuccessfulUserCreateBranchRequest(t *testing.T) {
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ server := runOperationServiceServer(t)
+ defer server.Stop()
+
+ client, conn := newOperationClient(t)
+ defer conn.Close()
+
+ startPoint := "c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd"
+ startPointCommit, err := log.GetCommit(ctx, testRepo, startPoint, "")
+ require.NoError(t, err)
+ user := &pb.User{
+ Name: []byte("Alejandro Rodríguez"),
+ Email: []byte("alejandro@gitlab.com"),
+ GlId: "user-1",
+ }
+
+ testCases := []struct {
+ desc string
+ branchName string
+ startPoint string
+ expectedBranch *pb.Branch
+ }{
+ {
+ desc: "valid branch",
+ branchName: "new-branch",
+ startPoint: startPoint,
+ expectedBranch: &pb.Branch{
+ Name: []byte("new-branch"),
+ TargetCommit: startPointCommit,
+ },
+ },
+ }
+
+ for _, testCase := range testCases {
+ t.Run(testCase.desc, func(t *testing.T) {
+ branchName := testCase.branchName
+ request := &pb.UserCreateBranchRequest{
+ Repository: testRepo,
+ BranchName: []byte(branchName),
+ StartPoint: []byte(testCase.startPoint),
+ User: user,
+ }
+
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ response, err := client.UserCreateBranch(ctx, request)
+ if testCase.expectedBranch != nil {
+ defer exec.Command("git", "-C", testRepoPath, "branch", "-D", branchName).Run()
+ }
+
+ require.NoError(t, err)
+ require.Equal(t, testCase.expectedBranch, response.Branch)
+ require.Empty(t, response.PreReceiveError)
+
+ branches := testhelper.MustRunCommand(t, nil, "git", "-C", testRepoPath, "branch")
+ require.Contains(t, string(branches), branchName)
+ })
+ }
+}
+
+func TestSuccessfulGitHooksForUserCreateBranchRequest(t *testing.T) {
+ server := runOperationServiceServer(t)
+ defer server.Stop()
+
+ client, conn := newOperationClient(t)
+ defer conn.Close()
+
+ branchName := "new-branch"
+ user := &pb.User{
+ Name: []byte("Alejandro Rodríguez"),
+ Email: []byte("alejandro@gitlab.com"),
+ GlId: "user-1",
+ }
+ request := &pb.UserCreateBranchRequest{
+ Repository: testRepo,
+ BranchName: []byte(branchName),
+ StartPoint: []byte("c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd"),
+ User: user,
+ }
+
+ for _, hookName := range []string{"pre-receive", "update", "post-receive"} {
+ t.Run(hookName, func(t *testing.T) {
+ defer exec.Command("git", "-C", testRepoPath, "branch", "-D", branchName).Run()
+
+ hookPath, hookOutputTempPath := writeEnvToHook(t, hookName)
+ defer os.Remove(hookPath)
+
+ ctx, cancel := testhelper.Context()
+ defer cancel()
+
+ response, err := client.UserCreateBranch(ctx, request)
+ require.NoError(t, err)
+ require.Empty(t, response.PreReceiveError)
+
+ output := string(testhelper.MustReadFile(t, hookOutputTempPath))
+ require.Contains(t, output, "GL_ID="+user.GlId)
+ })
+ }
+}
+
+func TestFailedUserCreateBranchDueToHooks(t *testing.T) {
+ server := runOperationServiceServer(t)
+ defer server.Stop()
+
+ client, conn := newOperationClient(t)
+ defer conn.Close()
+
+ user := &pb.User{
+ Name: []byte("Alejandro Rodríguez"),
+ Email: []byte("alejandro@gitlab.com"),
+ GlId: "user-1",
+ }
+ request := &pb.UserCreateBranchRequest{
+ Repository: testRepo,
+ BranchName: []byte("new-branch"),
+ StartPoint: []byte("c7fbe50c7c7419d9701eebe64b1fdacc3df5b9dd"),
+ User: user,
+ }
+ // Write a hook that will fail with the environment as the error message
+ // so we can check that string for our env variables.
+ hookContent := []byte("#!/bin/sh\nprintenv | paste -sd ' ' -\nexit 1")
+
+ for _, hookName := range []string{"pre-receive", "update"} {
+ hookPath := path.Join(testRepoPath, "hooks", hookName)
+ ioutil.WriteFile(hookPath, hookContent, 0755)
+ defer os.Remove(hookPath)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ response, err := client.UserCreateBranch(ctx, request)
+ require.Nil(t, err)
+ require.Contains(t, response.PreReceiveError, "GL_ID="+user.GlId)
+ require.Contains(t, response.PreReceiveError, "GL_REPOSITORY="+testRepo.GlRepository)
+ require.Contains(t, response.PreReceiveError, "GL_PROTOCOL=web")
+ require.Contains(t, response.PreReceiveError, "PWD="+testRepoPath)
+ }
+}
+
+func TestFailedUserCreateBranchRequest(t *testing.T) {
+ server := runOperationServiceServer(t)
+ defer server.Stop()
+
+ client, conn := newOperationClient(t)
+ defer conn.Close()
+
+ user := &pb.User{
+ Name: []byte("Alejandro Rodríguez"),
+ Email: []byte("alejandro@gitlab.com"),
+ }
+ testCases := []struct {
+ desc string
+ branchName string
+ startPoint string
+ user *pb.User
+ code codes.Code
+ }{
+ {
+ desc: "empty start_point",
+ branchName: "shiny-new-branch",
+ startPoint: "",
+ user: user,
+ code: codes.InvalidArgument,
+ },
+ {
+ desc: "empty user",
+ branchName: "shiny-new-branch",
+ startPoint: "master",
+ user: nil,
+ code: codes.InvalidArgument,
+ },
+ {
+ desc: "non-existing starting point",
+ branchName: "new-branch",
+ startPoint: "i-dont-exist",
+ user: user,
+ code: codes.FailedPrecondition,
+ },
+
+ {
+ desc: "branch exists",
+ branchName: "master",
+ startPoint: "master",
+ user: user,
+ code: codes.FailedPrecondition,
+ },
+ }
+
+ for _, testCase := range testCases {
+ t.Run(testCase.desc, func(t *testing.T) {
+ request := &pb.UserCreateBranchRequest{
+ Repository: testRepo,
+ BranchName: []byte(testCase.branchName),
+ StartPoint: []byte(testCase.startPoint),
+ User: testCase.user,
+ }
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ _, err := client.UserCreateBranch(ctx, request)
+ testhelper.AssertGrpcError(t, err, testCase.code, "")
+ })
+ }
+}
diff --git a/internal/service/operations/server.go b/internal/service/operations/server.go
index 6b792f27a..a79dd82aa 100644
--- a/internal/service/operations/server.go
+++ b/internal/service/operations/server.go
@@ -2,10 +2,9 @@ package operations
import (
"gitlab.com/gitlab-org/gitaly/internal/rubyserver"
+ "golang.org/x/net/context"
pb "gitlab.com/gitlab-org/gitaly-proto/go"
-
- "golang.org/x/net/context"
)
type server struct {
@@ -17,6 +16,7 @@ func NewServer(rs *rubyserver.Server) pb.OperationServiceServer {
return &server{rs}
}
-func (s *server) UserCreateBranch(ctx context.Context, req *pb.UserCreateBranchRequest) (*pb.UserCreateBranchResponse, error) {
+// UserDeleteBranch is a stub
+func (s *server) UserDeleteBranch(ctx context.Context, req *pb.UserDeleteBranchRequest) (*pb.UserDeleteBranchResponse, error) {
return nil, nil
}
diff --git a/internal/testhelper/testhelper.go b/internal/testhelper/testhelper.go
index 975c105e7..f91520c7f 100644
--- a/internal/testhelper/testhelper.go
+++ b/internal/testhelper/testhelper.go
@@ -82,7 +82,11 @@ func testRepoValid(repo *pb.Repository) bool {
// via the `Repository` returned from this function.
func TestRepository() *pb.Repository {
configureTestStorage()
- repo := &pb.Repository{StorageName: "default", RelativePath: TestRelativePath}
+ repo := &pb.Repository{
+ StorageName: "default",
+ RelativePath: TestRelativePath,
+ GlRepository: "project-1",
+ }
if !testRepoValid(repo) {
log.Fatalf("Test repo not found, did you run `make prepare-tests`?")
diff --git a/ruby/Gemfile b/ruby/Gemfile
index 1778b55a0..8435159e7 100644
--- a/ruby/Gemfile
+++ b/ruby/Gemfile
@@ -1,5 +1,5 @@
source 'https://rubygems.org'
gem 'github-linguist', '~> 4.7.0', require: 'linguist'
-gem 'gitaly-proto', '~> 0.35.0', require: 'gitaly'
+gem 'gitaly-proto', '~> 0.36.0', require: 'gitaly'
gem 'activesupport'
diff --git a/ruby/Gemfile.lock b/ruby/Gemfile.lock
index ab32fd4e9..9b8acc9de 100644
--- a/ruby/Gemfile.lock
+++ b/ruby/Gemfile.lock
@@ -13,7 +13,7 @@ GEM
escape_utils (1.1.1)
faraday (0.12.2)
multipart-post (>= 1.2, < 3)
- gitaly-proto (0.35.0)
+ gitaly-proto (0.36.0)
google-protobuf (~> 3.1)
grpc (~> 1.0)
github-linguist (4.7.6)
@@ -63,8 +63,8 @@ PLATFORMS
DEPENDENCIES
activesupport
- gitaly-proto (~> 0.35.0)
+ gitaly-proto (~> 0.36.0)
github-linguist (~> 4.7.0)
BUNDLED WITH
- 1.15.3
+ 1.15.4
diff --git a/ruby/lib/gitaly_server.rb b/ruby/lib/gitaly_server.rb
index 52e744bfd..9bdc73519 100644
--- a/ruby/lib/gitaly_server.rb
+++ b/ruby/lib/gitaly_server.rb
@@ -11,9 +11,14 @@ require_relative 'gitaly_server/repository_service.rb'
module GitalyServer
REPO_PATH_HEADER = 'gitaly-repo-path'.freeze
+ GL_REPOSITORY_HEADER = 'gitaly-gl-repository'.freeze
- def self.repo_path(_call)
- _call.metadata.fetch(REPO_PATH_HEADER)
+ def self.repo_path(call)
+ call.metadata.fetch(REPO_PATH_HEADER)
+ end
+
+ def self.gl_repository(call)
+ call.metadata.fetch(GL_REPOSITORY_HEADER)
end
def self.register_handlers(server)
diff --git a/ruby/lib/gitaly_server/operations_service.rb b/ruby/lib/gitaly_server/operations_service.rb
index 4f997faf0..948f57fba 100644
--- a/ruby/lib/gitaly_server/operations_service.rb
+++ b/ruby/lib/gitaly_server/operations_service.rb
@@ -18,5 +18,27 @@ module GitalyServer
rescue Gitlab::Git::HooksService::PreReceiveError => e
raise GRPC::FailedPrecondition.new(e.to_s)
end
+
+ def user_create_branch(request, call)
+ repo = Gitlab::Git::Repository.from_call(call)
+ target = request.start_point
+ raise GRPC::InvalidArgument.new('empty start_point') if target.empty?
+ gitaly_user = request.user
+ raise GRPC::InvalidArgument.new('empty user') unless gitaly_user
+
+ branch_name = request.branch_name
+ user = Gitlab::Git::User.from_gitaly(gitaly_user)
+ created_branch = repo.add_branch(branch_name, user: user, target: target)
+ return Gitaly::UserCreateBranchResponse.new unless created_branch
+
+ rugged_commit = created_branch.dereferenced_target.rugged_commit
+ commit = gitaly_commit_from_rugged(rugged_commit)
+ branch = Gitaly::Branch.new(name: branch_name, target_commit: commit)
+ Gitaly::UserCreateBranchResponse.new(branch: branch)
+ rescue Gitlab::Git::Repository::InvalidRef, Gitlab::Git::CommitError => ex
+ raise GRPC::FailedPrecondition.new(ex.message)
+ rescue Gitlab::Git::HooksService::PreReceiveError => ex
+ return Gitaly::UserCreateBranchResponse.new(pre_receive_error: ex.message)
+ end
end
end
diff --git a/ruby/lib/gitlab/git.rb b/ruby/lib/gitlab/git.rb
index fca45d316..8ade7f9a5 100644
--- a/ruby/lib/gitlab/git.rb
+++ b/ruby/lib/gitlab/git.rb
@@ -65,12 +65,13 @@ end
module Gitlab
module Git
class Repository
- def self.from_call(_call)
- new(GitalyServer.repo_path(_call))
+ def self.from_call(call)
+ new(GitalyServer.repo_path(call), GitalyServer.gl_repository(call))
end
- def initialize(path)
+ def initialize(path, gl_repository)
@path = path
+ @gl_repository = gl_repository
@rugged = Rugged::Repository.new(path)
@attributes = Gitlab::Git::Attributes.new(path)
end
diff --git a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/VERSION b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/VERSION
index 7b52f5e51..93d4c1ef0 100644
--- a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/VERSION
+++ b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/VERSION
@@ -1 +1 @@
-0.35.0
+0.36.0
diff --git a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/blob.pb.go b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/blob.pb.go
index 12054df83..410c97734 100644
--- a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/blob.pb.go
+++ b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/blob.pb.go
@@ -69,6 +69,8 @@ It has these top-level messages:
PostReceiveResponse
UserCreateBranchRequest
UserCreateBranchResponse
+ UserDeleteBranchRequest
+ UserDeleteBranchResponse
UserDeleteTagRequest
UserDeleteTagResponse
FindDefaultBranchNameRequest
diff --git a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/operations.pb.go b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/operations.pb.go
index bf9ed1d32..db75dbccc 100644
--- a/vendor/gitlab.com/gitlab-org/gitaly-proto/go/operations.pb.go
+++ b/vendor/gitlab.com/gitlab-org/gitaly-proto/go/operations.pb.go
@@ -59,6 +59,9 @@ func (m *UserCreateBranchRequest) GetStartPoint() []byte {
type UserCreateBranchResponse struct {
Branch *Branch `protobuf:"bytes,1,opt,name=branch" json:"branch,omitempty"`
+ // Error returned by the pre-receive hook. If no error was thrown,
+ // it's the empty string ("")
+ PreReceiveError string `protobuf:"bytes,2,opt,name=pre_receive_error,json=preReceiveError" json:"pre_receive_error,omitempty"`
}
func (m *UserCreateBranchResponse) Reset() { *m = UserCreateBranchResponse{} }
@@ -73,6 +76,53 @@ func (m *UserCreateBranchResponse) GetBranch() *Branch {
return nil
}
+func (m *UserCreateBranchResponse) GetPreReceiveError() string {
+ if m != nil {
+ return m.PreReceiveError
+ }
+ return ""
+}
+
+type UserDeleteBranchRequest struct {
+ Repository *Repository `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"`
+ BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"`
+ User *User `protobuf:"bytes,3,opt,name=user" json:"user,omitempty"`
+}
+
+func (m *UserDeleteBranchRequest) Reset() { *m = UserDeleteBranchRequest{} }
+func (m *UserDeleteBranchRequest) String() string { return proto.CompactTextString(m) }
+func (*UserDeleteBranchRequest) ProtoMessage() {}
+func (*UserDeleteBranchRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} }
+
+func (m *UserDeleteBranchRequest) GetRepository() *Repository {
+ if m != nil {
+ return m.Repository
+ }
+ return nil
+}
+
+func (m *UserDeleteBranchRequest) GetBranchName() []byte {
+ if m != nil {
+ return m.BranchName
+ }
+ return nil
+}
+
+func (m *UserDeleteBranchRequest) GetUser() *User {
+ if m != nil {
+ return m.User
+ }
+ return nil
+}
+
+type UserDeleteBranchResponse struct {
+}
+
+func (m *UserDeleteBranchResponse) Reset() { *m = UserDeleteBranchResponse{} }
+func (m *UserDeleteBranchResponse) String() string { return proto.CompactTextString(m) }
+func (*UserDeleteBranchResponse) ProtoMessage() {}
+func (*UserDeleteBranchResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
+
type UserDeleteTagRequest struct {
Repository *Repository `protobuf:"bytes,1,opt,name=repository" json:"repository,omitempty"`
TagName []byte `protobuf:"bytes,2,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"`
@@ -82,7 +132,7 @@ type UserDeleteTagRequest struct {
func (m *UserDeleteTagRequest) Reset() { *m = UserDeleteTagRequest{} }
func (m *UserDeleteTagRequest) String() string { return proto.CompactTextString(m) }
func (*UserDeleteTagRequest) ProtoMessage() {}
-func (*UserDeleteTagRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{2} }
+func (*UserDeleteTagRequest) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{4} }
func (m *UserDeleteTagRequest) GetRepository() *Repository {
if m != nil {
@@ -111,11 +161,13 @@ type UserDeleteTagResponse struct {
func (m *UserDeleteTagResponse) Reset() { *m = UserDeleteTagResponse{} }
func (m *UserDeleteTagResponse) String() string { return proto.CompactTextString(m) }
func (*UserDeleteTagResponse) ProtoMessage() {}
-func (*UserDeleteTagResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{3} }
+func (*UserDeleteTagResponse) Descriptor() ([]byte, []int) { return fileDescriptor6, []int{5} }
func init() {
proto.RegisterType((*UserCreateBranchRequest)(nil), "gitaly.UserCreateBranchRequest")
proto.RegisterType((*UserCreateBranchResponse)(nil), "gitaly.UserCreateBranchResponse")
+ proto.RegisterType((*UserDeleteBranchRequest)(nil), "gitaly.UserDeleteBranchRequest")
+ proto.RegisterType((*UserDeleteBranchResponse)(nil), "gitaly.UserDeleteBranchResponse")
proto.RegisterType((*UserDeleteTagRequest)(nil), "gitaly.UserDeleteTagRequest")
proto.RegisterType((*UserDeleteTagResponse)(nil), "gitaly.UserDeleteTagResponse")
}
@@ -132,6 +184,7 @@ const _ = grpc.SupportPackageIsVersion4
type OperationServiceClient interface {
UserCreateBranch(ctx context.Context, in *UserCreateBranchRequest, opts ...grpc.CallOption) (*UserCreateBranchResponse, error)
+ UserDeleteBranch(ctx context.Context, in *UserDeleteBranchRequest, opts ...grpc.CallOption) (*UserDeleteBranchResponse, error)
UserDeleteTag(ctx context.Context, in *UserDeleteTagRequest, opts ...grpc.CallOption) (*UserDeleteTagResponse, error)
}
@@ -152,6 +205,15 @@ func (c *operationServiceClient) UserCreateBranch(ctx context.Context, in *UserC
return out, nil
}
+func (c *operationServiceClient) UserDeleteBranch(ctx context.Context, in *UserDeleteBranchRequest, opts ...grpc.CallOption) (*UserDeleteBranchResponse, error) {
+ out := new(UserDeleteBranchResponse)
+ err := grpc.Invoke(ctx, "/gitaly.OperationService/UserDeleteBranch", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *operationServiceClient) UserDeleteTag(ctx context.Context, in *UserDeleteTagRequest, opts ...grpc.CallOption) (*UserDeleteTagResponse, error) {
out := new(UserDeleteTagResponse)
err := grpc.Invoke(ctx, "/gitaly.OperationService/UserDeleteTag", in, out, c.cc, opts...)
@@ -165,6 +227,7 @@ func (c *operationServiceClient) UserDeleteTag(ctx context.Context, in *UserDele
type OperationServiceServer interface {
UserCreateBranch(context.Context, *UserCreateBranchRequest) (*UserCreateBranchResponse, error)
+ UserDeleteBranch(context.Context, *UserDeleteBranchRequest) (*UserDeleteBranchResponse, error)
UserDeleteTag(context.Context, *UserDeleteTagRequest) (*UserDeleteTagResponse, error)
}
@@ -190,6 +253,24 @@ func _OperationService_UserCreateBranch_Handler(srv interface{}, ctx context.Con
return interceptor(ctx, in, info, handler)
}
+func _OperationService_UserDeleteBranch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UserDeleteBranchRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(OperationServiceServer).UserDeleteBranch(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/gitaly.OperationService/UserDeleteBranch",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(OperationServiceServer).UserDeleteBranch(ctx, req.(*UserDeleteBranchRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _OperationService_UserDeleteTag_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UserDeleteTagRequest)
if err := dec(in); err != nil {
@@ -217,6 +298,10 @@ var _OperationService_serviceDesc = grpc.ServiceDesc{
Handler: _OperationService_UserCreateBranch_Handler,
},
{
+ MethodName: "UserDeleteBranch",
+ Handler: _OperationService_UserDeleteBranch_Handler,
+ },
+ {
MethodName: "UserDeleteTag",
Handler: _OperationService_UserDeleteTag_Handler,
},
@@ -228,25 +313,28 @@ var _OperationService_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("operations.proto", fileDescriptor6) }
var fileDescriptor6 = []byte{
- // 308 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0xc1, 0x4a, 0xfb, 0x40,
- 0x10, 0xc6, 0xff, 0xfb, 0xb7, 0x54, 0x99, 0x46, 0x09, 0x8b, 0xd2, 0x18, 0x94, 0x86, 0x1c, 0xa4,
- 0xa7, 0x1c, 0xe2, 0x1b, 0x54, 0xcf, 0x55, 0xa2, 0xe2, 0xb1, 0x6c, 0xeb, 0x90, 0x06, 0xda, 0x6c,
- 0x9c, 0x9d, 0x0a, 0x7d, 0x02, 0x9f, 0xc7, 0xb3, 0x2f, 0x27, 0xc9, 0x26, 0x12, 0xa3, 0x05, 0xc1,
- 0xeb, 0xf7, 0x4d, 0x7e, 0xf3, 0x7d, 0x99, 0x05, 0x57, 0x17, 0x48, 0x8a, 0x33, 0x9d, 0x9b, 0xa8,
- 0x20, 0xcd, 0x5a, 0xf6, 0xd3, 0x8c, 0xd5, 0x6a, 0xeb, 0x3b, 0x66, 0xa9, 0x08, 0x9f, 0xac, 0x1a,
- 0xbe, 0x09, 0x18, 0x3e, 0x18, 0xa4, 0x2b, 0x42, 0xc5, 0x38, 0x21, 0x95, 0x2f, 0x96, 0x09, 0x3e,
- 0x6f, 0xd0, 0xb0, 0x8c, 0x01, 0x08, 0x0b, 0x6d, 0x32, 0xd6, 0xb4, 0xf5, 0x44, 0x20, 0xc6, 0x83,
- 0x58, 0x46, 0x16, 0x13, 0x25, 0x9f, 0x4e, 0xd2, 0x9a, 0x92, 0x23, 0x18, 0xcc, 0x2b, 0xc8, 0x2c,
- 0x57, 0x6b, 0xf4, 0xfe, 0x07, 0x62, 0xec, 0x24, 0x60, 0xa5, 0xa9, 0x5a, 0xa3, 0x0c, 0xa0, 0xb7,
- 0x31, 0x48, 0xde, 0x5e, 0x85, 0x73, 0x1a, 0x5c, 0x99, 0x21, 0xa9, 0x9c, 0x12, 0x61, 0x58, 0x11,
- 0xcf, 0x0a, 0x9d, 0xe5, 0xec, 0xf5, 0x2c, 0xa2, 0x92, 0x6e, 0x4b, 0x25, 0x9c, 0x80, 0xf7, 0x3d,
- 0xb2, 0x29, 0x74, 0x6e, 0x50, 0x5e, 0x40, 0xdf, 0x2e, 0xab, 0xf3, 0x1e, 0x35, 0x0b, 0xea, 0xb9,
- 0xda, 0x0d, 0x5f, 0x05, 0x1c, 0x97, 0x90, 0x6b, 0x5c, 0x21, 0xe3, 0xbd, 0x4a, 0xff, 0x52, 0xfa,
- 0x14, 0x0e, 0x58, 0xa5, 0xed, 0xc6, 0xfb, 0xac, 0xd2, 0xdf, 0xd5, 0x0d, 0x87, 0x70, 0xd2, 0x09,
- 0x62, 0xab, 0xc4, 0xef, 0x02, 0xdc, 0x9b, 0xe6, 0x8a, 0x77, 0x48, 0x2f, 0xd9, 0x02, 0xe5, 0x23,
- 0xb8, 0xdd, 0xee, 0x72, 0xd4, 0xa6, 0xfe, 0x70, 0x48, 0x3f, 0xd8, 0x3d, 0x60, 0x77, 0x85, 0xff,
- 0xe4, 0x14, 0x0e, 0xbf, 0xc4, 0x90, 0x67, 0xed, 0x8f, 0xba, 0xbf, 0xc9, 0x3f, 0xdf, 0xe1, 0x36,
- 0xbc, 0x79, 0xbf, 0x7a, 0x5f, 0x97, 0x1f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc3, 0x75, 0xe5, 0x7b,
- 0x89, 0x02, 0x00, 0x00,
+ // 364 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x93, 0xcd, 0x4e, 0xf2, 0x40,
+ 0x14, 0x86, 0x29, 0x1f, 0xe1, 0xd3, 0x03, 0x2a, 0x4e, 0x34, 0xd4, 0x46, 0x43, 0xd3, 0x85, 0x21,
+ 0x2e, 0x58, 0xe0, 0x1d, 0xf8, 0xb3, 0x45, 0x53, 0x35, 0x2e, 0x9b, 0x01, 0x4f, 0x4a, 0x13, 0xe8,
+ 0x8c, 0x67, 0x06, 0x12, 0xae, 0xc0, 0xad, 0x0b, 0x6f, 0xc4, 0x3b, 0x34, 0xed, 0xb4, 0xd2, 0xf2,
+ 0x93, 0x98, 0xb8, 0x71, 0xfb, 0x9e, 0xc3, 0x33, 0x0f, 0xef, 0x4c, 0xa1, 0x25, 0x24, 0x12, 0xd7,
+ 0x91, 0x88, 0x55, 0x4f, 0x92, 0xd0, 0x82, 0xd5, 0xc3, 0x48, 0xf3, 0xc9, 0xc2, 0x69, 0xaa, 0x31,
+ 0x27, 0x7c, 0x31, 0xa9, 0xf7, 0x69, 0x41, 0xfb, 0x49, 0x21, 0x5d, 0x13, 0x72, 0x8d, 0x57, 0xc4,
+ 0xe3, 0xd1, 0xd8, 0xc7, 0xd7, 0x19, 0x2a, 0xcd, 0xfa, 0x00, 0x84, 0x52, 0xa8, 0x48, 0x0b, 0x5a,
+ 0xd8, 0x96, 0x6b, 0x75, 0x1b, 0x7d, 0xd6, 0x33, 0x98, 0x9e, 0xff, 0x3d, 0xf1, 0x0b, 0x5b, 0xac,
+ 0x03, 0x8d, 0x61, 0x0a, 0x09, 0x62, 0x3e, 0x45, 0xbb, 0xea, 0x5a, 0xdd, 0xa6, 0x0f, 0x26, 0x1a,
+ 0xf0, 0x29, 0x32, 0x17, 0x6a, 0x33, 0x85, 0x64, 0xff, 0x4b, 0x71, 0xcd, 0x1c, 0x97, 0x38, 0xf8,
+ 0xe9, 0x24, 0x41, 0x28, 0xcd, 0x49, 0x07, 0x52, 0x44, 0xb1, 0xb6, 0x6b, 0x06, 0x91, 0x46, 0xf7,
+ 0x49, 0xe2, 0xc5, 0x60, 0xaf, 0x2b, 0x2b, 0x29, 0x62, 0x85, 0xec, 0x1c, 0xea, 0xe6, 0xb0, 0xcc,
+ 0x77, 0x3f, 0x3f, 0x20, 0xdb, 0xcb, 0xa6, 0xec, 0x02, 0x0e, 0x25, 0x61, 0x40, 0x38, 0xc2, 0x68,
+ 0x8e, 0x01, 0x12, 0x09, 0x4a, 0x6d, 0x77, 0xfd, 0x03, 0x49, 0xe8, 0x9b, 0xfc, 0x36, 0x89, 0xbd,
+ 0xf7, 0xac, 0xa3, 0x1b, 0x9c, 0xe0, 0xdf, 0xe8, 0xc8, 0x73, 0x4c, 0x05, 0x65, 0x23, 0x53, 0x81,
+ 0xf7, 0x66, 0xc1, 0xd1, 0x72, 0xf8, 0xc8, 0xc3, 0xdf, 0xb8, 0x9e, 0xc0, 0x8e, 0xe6, 0x61, 0x51,
+ 0xf4, 0xbf, 0xe6, 0xe1, 0x0f, 0x2d, 0xdb, 0x70, 0xbc, 0x22, 0x62, 0x14, 0xfb, 0x1f, 0x55, 0x68,
+ 0xdd, 0xe5, 0x0f, 0xf4, 0x01, 0x69, 0x1e, 0x8d, 0x90, 0x3d, 0x43, 0x6b, 0xf5, 0x5a, 0x59, 0xa7,
+ 0x48, 0xdd, 0xf0, 0x46, 0x1d, 0x77, 0xfb, 0x42, 0x56, 0x47, 0x25, 0x07, 0x17, 0xcb, 0x2a, 0x83,
+ 0x37, 0x5c, 0x6c, 0x19, 0xbc, 0xb1, 0xe7, 0x0a, 0x1b, 0xc0, 0x5e, 0xe9, 0xff, 0xb1, 0xd3, 0xf5,
+ 0x1f, 0x2d, 0xfb, 0x77, 0xce, 0xb6, 0x4c, 0x73, 0xde, 0xb0, 0x9e, 0x7e, 0x93, 0x97, 0x5f, 0x01,
+ 0x00, 0x00, 0xff, 0xff, 0xd8, 0xfd, 0xb2, 0x1c, 0xbd, 0x03, 0x00, 0x00,
}
diff --git a/vendor/vendor.json b/vendor/vendor.json
index 5b87630f2..9a89c0cfe 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -201,12 +201,12 @@
"revisionTime": "2017-01-30T11:31:45Z"
},
{
- "checksumSHA1": "A2jWY7L3EazZt0xdKFKMDOGXCdk=",
+ "checksumSHA1": "LvIL7+npdye+NniogqeMWLLdxeg=",
"path": "gitlab.com/gitlab-org/gitaly-proto/go",
- "revision": "b61fee8cd76e282d15a3c719f7f71a4f71ef0d6c",
- "revisionTime": "2017-09-20T19:16:33Z",
- "version": "v0.35.0",
- "versionExact": "v0.35.0"
+ "revision": "3264145c6decc6763b3afbd5e92c59228397ea8f",
+ "revisionTime": "2017-09-22T16:10:08Z",
+ "version": "v0.36.0",
+ "versionExact": "v0.36.0"
},
{
"checksumSHA1": "nqWNlnMmVpt628zzvyo6Yv2CX5Q=",