diff options
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 |
commit | 1101143d0eeb4b9a7e24191847d2722390049566 (patch) | |
tree | a106135bb0e6dcbd1dea212d2a91a91d545555e5 | |
parent | 2bd9129f0b9a448f5ff324cf813f3d9d997bf67c (diff) |
try to wrap mktag, still fails
-rw-r--r-- | internal/git/mktag.go | 34 | ||||
-rw-r--r-- | internal/gitaly/service/operations/tags.go | 6 |
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 { |