mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-23 07:55:29 +01:00
When creating a new repository and copying issue labels from a template, the explicit sort order of exclusive labels was previously being lost (resetting to 0). This fix ensures that the original sort order for exclusive labels (e.g., 1, 2) is properly copied and retained in the newly created repository. Fixes #36463 --------- Signed-off-by: Paulo Chen <paulochen@tecnico.ulisboa.pt> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
068d7a513a
commit
0e0cf7a813
@ -33,11 +33,12 @@ func GenerateIssueLabels(ctx context.Context, templateRepo, generateRepo *repo_m
|
||||
newLabels := make([]*issues_model.Label, 0, len(templateLabels))
|
||||
for _, templateLabel := range templateLabels {
|
||||
newLabels = append(newLabels, &issues_model.Label{
|
||||
RepoID: generateRepo.ID,
|
||||
Name: templateLabel.Name,
|
||||
Exclusive: templateLabel.Exclusive,
|
||||
Description: templateLabel.Description,
|
||||
Color: templateLabel.Color,
|
||||
RepoID: generateRepo.ID,
|
||||
Name: templateLabel.Name,
|
||||
Exclusive: templateLabel.Exclusive,
|
||||
ExclusiveOrder: templateLabel.ExclusiveOrder,
|
||||
Description: templateLabel.Description,
|
||||
Color: templateLabel.Color,
|
||||
})
|
||||
}
|
||||
return db.Insert(ctx, newLabels)
|
||||
|
||||
@ -13,6 +13,8 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
issues_model "code.gitea.io/gitea/models/issues"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
"code.gitea.io/gitea/models/unit"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
@ -525,19 +527,39 @@ func TestGenerateRepository(t *testing.T) {
|
||||
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||
repo44 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 44})
|
||||
|
||||
tmplRepoLabels := []*issues_model.Label{
|
||||
{RepoID: 44, Name: "priority/high", Exclusive: true, ExclusiveOrder: 2, Color: "#ee0000", Description: "desc-high"},
|
||||
{RepoID: 44, Name: "priority/low", Exclusive: true, ExclusiveOrder: 1, Color: "#0000ee", Description: "desc-low"},
|
||||
}
|
||||
|
||||
require.NoError(t, issues_model.NewLabels(t.Context(), tmplRepoLabels...))
|
||||
|
||||
generatedRepo, err := repo_service.GenerateRepository(t.Context(), user2, user2, repo44, repo_service.GenerateRepoOptions{
|
||||
Name: "generated-from-template-44",
|
||||
GitContent: true,
|
||||
Name: "generated-from-template-44",
|
||||
GitContent: true,
|
||||
IssueLabels: true,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, generatedRepo)
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, generatedRepo)
|
||||
|
||||
exist, err := util.IsExist(repo_model.RepoPath(user2.Name, generatedRepo.Name))
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, exist)
|
||||
require.NoError(t, err)
|
||||
require.True(t, exist)
|
||||
|
||||
unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: generatedRepo.Name})
|
||||
|
||||
generatedLabels, err := issues_model.GetLabelsByRepoID(t.Context(), generatedRepo.ID, "", db.ListOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, generatedLabels, len(tmplRepoLabels))
|
||||
for i, tmplLabel := range tmplRepoLabels {
|
||||
genLabel := generatedLabels[i]
|
||||
assert.Equal(t, tmplLabel.Name, genLabel.Name)
|
||||
assert.Equal(t, tmplLabel.Exclusive, genLabel.Exclusive)
|
||||
assert.Equal(t, tmplLabel.ExclusiveOrder, genLabel.ExclusiveOrder)
|
||||
assert.Equal(t, tmplLabel.Color, genLabel.Color)
|
||||
assert.Equal(t, tmplLabel.Description, genLabel.Description)
|
||||
}
|
||||
|
||||
err = repo_service.DeleteRepositoryDirectly(t.Context(), generatedRepo.ID)
|
||||
assert.NoError(t, err)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user