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:
authorPaul Okstad <pokstad@gitlab.com>2019-06-19 21:49:41 +0300
committerPaul Okstad <pokstad@gitlab.com>2019-06-19 21:49:41 +0300
commit723136fd62a717d3c8cf08456deba99af027535c (patch)
treec61b215cb7f1db7a85950b764129af41c9f37845
parentcd213232b66f45ed77f2b23caad7faa2db90ec17 (diff)
parent19fdfa12a9b20ca5919f4dafca1cc55e3e5b5400 (diff)
Merge branch 'osw-skip-hooks-for-merge-to-ref' into 'master'
Skip hooks for UserMergeToRef RPC See merge request gitlab-org/gitaly!1312
-rw-r--r--changelogs/unreleased/osw-skip-hooks-for-merge-to-ref.yml5
-rw-r--r--internal/service/operations/merge.go5
-rw-r--r--internal/service/operations/merge_test.go15
-rw-r--r--ruby/lib/gitlab/git/operation_service.rb2
4 files changed, 23 insertions, 4 deletions
diff --git a/changelogs/unreleased/osw-skip-hooks-for-merge-to-ref.yml b/changelogs/unreleased/osw-skip-hooks-for-merge-to-ref.yml
new file mode 100644
index 000000000..25eab6c52
--- /dev/null
+++ b/changelogs/unreleased/osw-skip-hooks-for-merge-to-ref.yml
@@ -0,0 +1,5 @@
+---
+title: Skip hooks for UserMergeToRef RPC
+merge_request: 1312
+author:
+type: other
diff --git a/internal/service/operations/merge.go b/internal/service/operations/merge.go
index 60588c011..dd44a76be 100644
--- a/internal/service/operations/merge.go
+++ b/internal/service/operations/merge.go
@@ -3,6 +3,7 @@ package operations
import (
"context"
"fmt"
+ "strings"
"gitlab.com/gitlab-org/gitaly-proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/internal/helper"
@@ -107,6 +108,10 @@ func validateUserMergeToRefRequest(in *gitalypb.UserMergeToRefRequest) error {
return fmt.Errorf("empty target ref")
}
+ if !strings.HasPrefix(string(in.TargetRef), "refs/merge-requests") {
+ return fmt.Errorf("invalid target ref")
+ }
+
return nil
}
diff --git a/internal/service/operations/merge_test.go b/internal/service/operations/merge_test.go
index 44e875b65..b9a0be004 100644
--- a/internal/service/operations/merge_test.go
+++ b/internal/service/operations/merge_test.go
@@ -616,6 +616,15 @@ func TestFailedUserMergeToRefRequest(t *testing.T) {
code: codes.InvalidArgument,
},
{
+ desc: "invalid target ref",
+ repo: testRepo,
+ user: mergeUser,
+ branch: []byte(branchName),
+ sourceSha: commitToMerge,
+ targetRef: []byte("refs/heads/branch"),
+ code: codes.InvalidArgument,
+ },
+ {
desc: "non-existing branch",
repo: testRepo,
user: mergeUser,
@@ -644,7 +653,7 @@ func TestFailedUserMergeToRefRequest(t *testing.T) {
}
}
-func TestUserMergeToRefFailedDueToHooksRequest(t *testing.T) {
+func TestUserMergeToRefIgnoreHooksRequest(t *testing.T) {
server, serverSocketPath := runOperationServiceServer(t)
defer server.Stop()
@@ -680,8 +689,8 @@ func TestUserMergeToRefFailedDueToHooksRequest(t *testing.T) {
defer cancel()
resp, err := client.UserMergeToRef(ctx, request)
- require.Nil(t, err)
- require.Contains(t, resp.PreReceiveError, "failure")
+ require.NoError(t, err)
+ require.Empty(t, resp.PreReceiveError)
})
}
}
diff --git a/ruby/lib/gitlab/git/operation_service.rb b/ruby/lib/gitlab/git/operation_service.rb
index 48559d4e7..6530ef342 100644
--- a/ruby/lib/gitlab/git/operation_service.rb
+++ b/ruby/lib/gitlab/git/operation_service.rb
@@ -120,7 +120,7 @@ module Gitlab
oldrev = from_branch.target
- update_ref_in_hooks(ref, newrev, oldrev)
+ update_ref(ref, newrev, oldrev)
newrev
end