mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-05-13 06:20:24 +00:00
[v13.0/forgejo] fix: set tag message on tag addition (#9918)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/9913 - When `SyncReleasesWithTags` is called, the code that synchronizes new tags to the database did not set the Note of the release to the tag's message. This was particularly noticeable when using the migration feature that tags have a empty description. - Resolves forgejo/forgejo#7647 Co-authored-by: Gusted <postmaster@gusted.xyz> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9918 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org> Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
This commit is contained in:
parent
3bc1ae21ac
commit
a50968d0de
2 changed files with 60 additions and 0 deletions
|
|
@ -164,6 +164,7 @@ func PushUpdateAddTag(ctx context.Context, repo *repo_model.Repository, gitRepo
|
|||
NumCommits: commitsCount,
|
||||
CreatedUnix: timeutil.TimeStamp(createdAt.Unix()),
|
||||
IsTag: true,
|
||||
Note: tag.Message,
|
||||
}
|
||||
if author != nil {
|
||||
rel.PublisherID = author.ID
|
||||
|
|
|
|||
|
|
@ -1,14 +1,20 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package repository
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
|
||||
repo_model "forgejo.org/models/repo"
|
||||
"forgejo.org/models/unittest"
|
||||
"forgejo.org/modules/git"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_calcSync(t *testing.T) {
|
||||
|
|
@ -74,3 +80,56 @@ func Test_calcSync(t *testing.T) {
|
|||
assert.Equal(t, *gitTags[1], *updates[0], "updates equal")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSyncReleasesWithTags(t *testing.T) {
|
||||
require.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
// Can be any repository that doesn't have the git tag releases.
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
||||
|
||||
t.Run("SHA1", func(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
require.NoError(t, git.InitRepository(t.Context(), tmpDir, false, git.Sha1ObjectFormat.Name()))
|
||||
gitRepo, err := git.OpenRepository(t.Context(), tmpDir)
|
||||
require.NoError(t, err)
|
||||
defer gitRepo.Close()
|
||||
|
||||
require.NoError(t, os.WriteFile(path.Join(tmpDir, "README.md"), []byte("testing the testing"), 0o666))
|
||||
require.NoError(t, git.AddChanges(tmpDir, true))
|
||||
require.NoError(t, git.CommitChanges(tmpDir, git.CommitChangesOptions{Message: "Add README"}))
|
||||
require.NoError(t, gitRepo.CreateAnnotatedTag("v1.0.0", "First release \\o/", "HEAD"))
|
||||
|
||||
require.NoError(t, SyncReleasesWithTags(t.Context(), repo, gitRepo))
|
||||
|
||||
release := unittest.AssertExistsAndLoadBean(t, &repo_model.Release{RepoID: repo.ID, TagName: "v1.0.0"})
|
||||
assert.Equal(t, "First release \\o/\n", release.Note)
|
||||
assert.True(t, release.IsTag)
|
||||
assert.EqualValues(t, 1, release.NumCommits)
|
||||
})
|
||||
|
||||
t.Run("SHA256", func(t *testing.T) {
|
||||
if !git.SupportHashSha256 {
|
||||
t.Skip("skipping because installed Git version doesn't support SHA256")
|
||||
}
|
||||
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
require.NoError(t, git.InitRepository(t.Context(), tmpDir, false, git.Sha256ObjectFormat.Name()))
|
||||
gitRepo, err := git.OpenRepository(t.Context(), tmpDir)
|
||||
require.NoError(t, err)
|
||||
defer gitRepo.Close()
|
||||
|
||||
require.NoError(t, os.WriteFile(path.Join(tmpDir, "README.md"), []byte("testing the testing"), 0o666))
|
||||
require.NoError(t, git.AddChanges(tmpDir, true))
|
||||
require.NoError(t, git.CommitChanges(tmpDir, git.CommitChangesOptions{Message: "Add README"}))
|
||||
require.NoError(t, gitRepo.CreateAnnotatedTag("v2.0.0", "Second release \\o/", "HEAD"))
|
||||
|
||||
require.NoError(t, SyncReleasesWithTags(t.Context(), repo, gitRepo))
|
||||
|
||||
release := unittest.AssertExistsAndLoadBean(t, &repo_model.Release{RepoID: repo.ID, TagName: "v2.0.0"})
|
||||
assert.Equal(t, "Second release \\o/\n", release.Note)
|
||||
assert.True(t, release.IsTag)
|
||||
assert.EqualValues(t, 1, release.NumCommits)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue