refactor: remove Ctx field from git.Repository (#38500)

This commit is contained in:
wxiaoguang
2026-07-17 18:44:31 +08:00
committed by GitHub
parent 2c8e99bbf7
commit 5b078f72aa
235 changed files with 1234 additions and 1258 deletions
+6 -6
View File
@@ -28,7 +28,7 @@ type GenerateReleaseNotesOptions struct {
// GenerateReleaseNotes builds the Markdown snippet for release notes.
func GenerateReleaseNotes(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, opts GenerateReleaseNotesOptions) (string, error) {
headCommit, err := resolveHeadCommit(gitRepo, opts.TagName, opts.TagTarget)
headCommit, err := resolveHeadCommit(ctx, gitRepo, opts.TagName, opts.TagTarget)
if err != nil {
return "", err
}
@@ -40,7 +40,7 @@ func GenerateReleaseNotes(ctx context.Context, repo *repo_model.Repository, gitR
var baseCommitID git.RefName
if opts.PreviousTag != "" {
baseCommit, err := gitRepo.GetCommit(opts.PreviousTag)
baseCommit, err := gitRepo.GetCommit(ctx, opts.PreviousTag)
if err != nil {
return "", util.ErrorWrapTranslatable(util.ErrNotExist, "repo.release.generate_notes_tag_not_found", opts.PreviousTag)
}
@@ -49,7 +49,7 @@ func GenerateReleaseNotes(ctx context.Context, repo *repo_model.Repository, gitR
return "", util.ErrorWrapTranslatable(util.ErrNotExist, "repo.release.generate_notes_tag_not_found", opts.TagName)
}
commits, err := gitRepo.CommitsBetween(headCommit.ID.RefName(), baseCommitID, -1)
commits, err := gitRepo.CommitsBetween(ctx, headCommit.ID.RefName(), baseCommitID, -1)
if err != nil {
return "", fmt.Errorf("CommitsBetween: %w", err)
}
@@ -85,13 +85,13 @@ func repoReleaseIsEmpty(ctx context.Context, repoID int64) (bool, error) {
return count == 0, nil
}
func resolveHeadCommit(gitRepo *git.Repository, tagName, tagTarget string) (*git.Commit, error) {
func resolveHeadCommit(ctx context.Context, gitRepo *git.Repository, tagName, tagTarget string) (*git.Commit, error) {
ref := tagName
if !gitRepo.IsTagExist(tagName) {
if !gitRepo.IsTagExist(ctx, tagName) {
ref = tagTarget
}
commit, err := gitRepo.GetCommit(ref)
commit, err := gitRepo.GetCommit(ctx, ref)
if err != nil {
return nil, util.ErrorWrapTranslatable(util.ErrNotExist, "repo.release.generate_notes_target_not_found", ref)
}
+3 -3
View File
@@ -23,7 +23,7 @@ func TestGenerateReleaseNotes(t *testing.T) {
t.Run("ChangeLogsWithPRs", func(t *testing.T) {
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
require.NoError(t, err)
t.Cleanup(func() { gitRepo.Close() })
@@ -52,7 +52,7 @@ func TestGenerateReleaseNotes(t *testing.T) {
t.Run("NoPreviousTag", func(t *testing.T) {
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 16})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
require.NoError(t, err)
t.Cleanup(func() { gitRepo.Close() })
@@ -83,7 +83,7 @@ func TestGenerateReleaseNotes(t *testing.T) {
t.Run("EmptyPreviousTagWithExistingTags", func(t *testing.T) {
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
require.NoError(t, err)
t.Cleanup(func() { gitRepo.Close() })
+12 -12
View File
@@ -103,13 +103,13 @@ func createTag(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Rel
}
}
commit, err := gitRepo.GetCommit(rel.Target)
commit, err := gitRepo.GetCommit(ctx, rel.Target)
if err != nil {
return false, err
}
if len(msg) > 0 {
if err = gitRepo.CreateAnnotatedTag(rel.TagName, msg, commit.ID.String()); err != nil {
if err = gitRepo.CreateAnnotatedTag(ctx, rel.TagName, msg, commit.ID.String()); err != nil {
if strings.Contains(err.Error(), "is not a valid tag name") {
return false, ErrInvalidTagName{
TagName: rel.TagName,
@@ -117,7 +117,7 @@ func createTag(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Rel
}
return false, err
}
} else if err = gitRepo.CreateTag(rel.TagName, commit.ID.String()); err != nil {
} else if err = gitRepo.CreateTag(ctx, rel.TagName, commit.ID.String()); err != nil {
if strings.Contains(err.Error(), "is not a valid tag name") {
return false, ErrInvalidTagName{
TagName: rel.TagName,
@@ -144,7 +144,7 @@ func createTag(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Rel
notify_service.CreateRef(ctx, rel.Publisher, rel.Repo, refFullName, commit.ID.String())
rel.CreatedUnix = timeutil.TimeStampNow()
}
commit, err := gitRepo.GetTagCommit(rel.TagName)
commit, err := gitRepo.GetTagCommit(ctx, rel.TagName)
if err != nil {
return false, fmt.Errorf("GetTagCommit: %w", err)
}
@@ -168,8 +168,8 @@ func createTag(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Rel
}
// CreateRelease creates a new release of repository.
func CreateRelease(gitRepo *git.Repository, rel *repo_model.Release, attachmentUUIDs []string, msg string) error {
has, err := repo_model.IsReleaseExist(gitRepo.Ctx, rel.RepoID, rel.TagName)
func CreateRelease(ctx context.Context, gitRepo *git.Repository, rel *repo_model.Release, attachmentUUIDs []string, msg string) error {
has, err := repo_model.IsReleaseExist(ctx, rel.RepoID, rel.TagName)
if err != nil {
return err
} else if has {
@@ -178,22 +178,22 @@ func CreateRelease(gitRepo *git.Repository, rel *repo_model.Release, attachmentU
}
}
if _, err = createTag(gitRepo.Ctx, gitRepo, rel, msg); err != nil {
if _, err = createTag(ctx, gitRepo, rel, msg); err != nil {
return err
}
rel.Title = util.EllipsisDisplayString(rel.Title, 255)
rel.LowerTagName = strings.ToLower(rel.TagName)
if err = db.Insert(gitRepo.Ctx, rel); err != nil {
if err = db.Insert(ctx, rel); err != nil {
return err
}
if err = repo_model.AddReleaseAttachments(gitRepo.Ctx, rel.ID, attachmentUUIDs); err != nil {
if err = repo_model.AddReleaseAttachments(ctx, rel.ID, attachmentUUIDs); err != nil {
return err
}
if !rel.IsDraft {
notify_service.NewRelease(gitRepo.Ctx, rel)
notify_service.NewRelease(ctx, rel)
}
return nil
@@ -352,10 +352,10 @@ func UpdateRelease(ctx context.Context, doer *user_model.User, gitRepo *git.Repo
if !rel.IsDraft {
if !isTagCreated && !isConvertedFromTag {
notify_service.UpdateRelease(gitRepo.Ctx, doer, rel)
notify_service.UpdateRelease(ctx, doer, rel)
return nil
}
notify_service.NewRelease(gitRepo.Ctx, rel)
notify_service.NewRelease(ctx, rel)
}
return nil
}
+13 -13
View File
@@ -33,11 +33,11 @@ func TestRelease_Create(t *testing.T) {
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -51,7 +51,7 @@ func TestRelease_Create(t *testing.T) {
IsTag: false,
}, nil, ""))
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -65,7 +65,7 @@ func TestRelease_Create(t *testing.T) {
IsTag: false,
}, nil, ""))
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -79,7 +79,7 @@ func TestRelease_Create(t *testing.T) {
IsTag: false,
}, nil, ""))
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -93,7 +93,7 @@ func TestRelease_Create(t *testing.T) {
IsTag: false,
}, nil, ""))
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -129,7 +129,7 @@ func TestRelease_Create(t *testing.T) {
IsPrerelease: false,
IsTag: true,
}
assert.NoError(t, CreateRelease(gitRepo, &release, []string{attach.UUID}, "test"))
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &release, []string{attach.UUID}, "test"))
}
func TestRelease_Update(t *testing.T) {
@@ -138,7 +138,7 @@ func TestRelease_Update(t *testing.T) {
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()
@@ -149,7 +149,7 @@ func TestRelease_Update(t *testing.T) {
advance := func() { fakeNow = fakeNow.Add(time.Second); timeutil.MockSet(fakeNow) }
// Test a changed release
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -173,7 +173,7 @@ func TestRelease_Update(t *testing.T) {
assert.Equal(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
// Test a changed draft
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -197,7 +197,7 @@ func TestRelease_Update(t *testing.T) {
assert.Less(t, int64(releaseCreatedUnix), int64(release.CreatedUnix))
// Test a changed pre-release
assert.NoError(t, CreateRelease(gitRepo, &repo_model.Release{
assert.NoError(t, CreateRelease(t.Context(), gitRepo, &repo_model.Release{
RepoID: repo.ID,
Repo: repo,
PublisherID: user.ID,
@@ -235,7 +235,7 @@ func TestRelease_Update(t *testing.T) {
IsPrerelease: false,
IsTag: false,
}
assert.NoError(t, CreateRelease(gitRepo, release, nil, ""))
assert.NoError(t, CreateRelease(t.Context(), gitRepo, release, nil, ""))
assert.Positive(t, release.ID)
release.IsDraft = false
@@ -297,7 +297,7 @@ func TestRelease_createTag(t *testing.T) {
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
gitRepo, err := gitrepo.OpenRepository(t.Context(), repo)
gitRepo, err := gitrepo.OpenRepository(repo)
assert.NoError(t, err)
defer gitRepo.Close()