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:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2020-11-23 16:48:41 +0300
committerÆvar Arnfjörð Bjarmason <avarab@gmail.com>2020-11-23 16:48:41 +0300
commit1101143d0eeb4b9a7e24191847d2722390049566 (patch)
treea106135bb0e6dcbd1dea212d2a91a91d545555e5
parent2bd9129f0b9a448f5ff324cf813f3d9d997bf67c (diff)
try to wrap mktag, still fails
-rw-r--r--internal/git/mktag.go34
-rw-r--r--internal/gitaly/service/operations/tags.go6
2 files changed, 39 insertions, 1 deletions
diff --git a/internal/git/mktag.go b/internal/git/mktag.go
new file mode 100644
index 000000000..953f69673
--- /dev/null
+++ b/internal/git/mktag.go
@@ -0,0 +1,34 @@
+package git
+
+import (
+ "context"
+
+ "gitlab.com/gitlab-org/gitaly/internal/command"
+)
+
+
+// MkTag writes a tag with git-mktag. The code is mostly stolen from
+// git::WriteBlob()
+func (repo *LocalRepository) MkTag(ctx context.Context, oid string, objectType string, tag string, tagger string) (string, error) {
+ stdout := &bytes.Buffer{}
+ stderr := &bytes.Buffer{}
+ content "hello world"
+
+ cmd, err := repo.command(ctx, nil,
+ SubCmd{
+ Name: "mktag",
+ },
+ WithStdin(content),
+ WithStdout(stdout),
+ WithStderr(stderr),
+ )
+ if err != nil {
+ return "", err
+ }
+
+ if err := cmd.Wait(); err != nil {
+ return "", errorWithStderr(err, stderr.Bytes())
+ }
+
+ return text.ChompBytes(stdout.Bytes()), nil
+}
diff --git a/internal/gitaly/service/operations/tags.go b/internal/gitaly/service/operations/tags.go
index 914767ae0..ccc9809af 100644
--- a/internal/gitaly/service/operations/tags.go
+++ b/internal/gitaly/service/operations/tags.go
@@ -6,6 +6,7 @@ import (
"fmt"
"gitlab.com/gitlab-org/gitaly/internal/git"
+ "gitlab.com/gitlab-org/gitaly/internal/git/mktag"
"gitlab.com/gitlab-org/gitaly/internal/gitaly/rubyserver"
"gitlab.com/gitlab-org/gitaly/internal/gitaly/service/ref"
"gitlab.com/gitlab-org/gitaly/internal/helper"
@@ -156,7 +157,10 @@ func (s *server) UserCreateTagGo(ctx context.Context, req *gitalypb.UserCreateTa
tag := fmt.Sprintf("refs/tags/%s", req.TagName)
if req.Message != nil {
- return nil, status.Errorf(codes.InvalidArgument, "Bad Request (we don't handle annotated yet)")
+ annotatedTagObj, err := mktag.MkTag(ctx, targetOid, "commit", tag, ". <> 0 +0000");
+ if err != nil {
+ return nil, status.Error(codes.Internal, err.Error())
+ }
}
if err := s.updateReferenceWithHooks(ctx, req.Repository, req.User, tag, targetOid, git.NullSHA); err != nil {