diff --git a/internal/git/localrepo/tag.go b/internal/git/localrepo/tag.go index 59b8da8d8d9eef7d14fa077b92b681aa7a11efbc..88091698c3c96b074a6facc9eecb0680a76feb97 100644 --- a/internal/git/localrepo/tag.go +++ b/internal/git/localrepo/tag.go @@ -76,6 +76,12 @@ func (e MktagError) Error() string { return fmt.Sprintf("Could not update refs/tags/%s. Please refresh and try again.", e.tagName) } +// DetailedError provides a more detailed error message that includes the `stderr` content. +// Once the backwards compatibility requirement is removed, this can be moved to the Error() function. +func (e MktagError) DetailedError() string { + return fmt.Sprintf("mktag failed for refs/tags/%s, stderr: %q", e.tagName, e.stderr) +} + // WriteTag writes a tag to the repository's object database with // git-mktag and returns its object ID. // diff --git a/internal/gitaly/service/operations/tags.go b/internal/gitaly/service/operations/tags.go index 604299bc241f7e7850f6ddc9894b0fea4678b018..89c45a00a8dd390f69851965d341d8c2dfbbddd4 100644 --- a/internal/gitaly/service/operations/tags.go +++ b/internal/gitaly/service/operations/tags.go @@ -290,8 +290,12 @@ func (s *Server) createTag( return nil, "", structerr.NewInvalidArgument("formatting tag: %w", formatTagErr) } - var MktagError localrepo.MktagError - if errors.As(err, &MktagError) { + var mktagError localrepo.MktagError + if errors.As(err, &mktagError) { + // TODO: can be delete once localrepo.MktagError.Error() + // backwards compatibility requirement is removed. + s.logger.WithField("error", mktagError.DetailedError()).Error("making tag failed") + return nil, "", structerr.NewNotFound("Gitlab::Git::CommitError: %s", err.Error()) } return nil, "", structerr.NewInternal("writing tag: %w", err)