Skip to content

Commit dcaeb90

Browse files
authored
Merge branch 'go-gitea:main' into main
2 parents 4e10abd + 03fce8f commit dcaeb90

File tree

131 files changed

+1445
-1071
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+1445
-1071
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ __debug_bin*
2525
# Visual Studio
2626
/.vs/
2727

28+
# mise version managment tool
29+
mise.toml
30+
2831
*.cgo1.go
2932
*.cgo2.c
3033
_cgo_defun.c
@@ -121,4 +124,3 @@ prime/
121124
/AGENT.md
122125
/CLAUDE.md
123126
/llms.txt
124-

cmd/admin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error {
121121
}
122122
log.Trace("Processing next %d repos of %d", len(repos), count)
123123
for _, repo := range repos {
124-
log.Trace("Synchronizing repo %s with path %s", repo.FullName(), repo.RepoPath())
124+
log.Trace("Synchronizing repo %s with path %s", repo.FullName(), repo.RelativePath())
125125
gitRepo, err := gitrepo.OpenRepository(ctx, repo)
126126
if err != nil {
127127
log.Warn("OpenRepository: %v", err)
@@ -147,7 +147,7 @@ func runRepoSyncReleases(ctx context.Context, _ *cli.Command) error {
147147
continue
148148
}
149149

150-
log.Trace(" repo %s releases synchronized to tags: from %d to %d",
150+
log.Trace("repo %s releases synchronized to tags: from %d to %d",
151151
repo.FullName(), oldnum, count)
152152
gitRepo.Close()
153153
}

cmd/hook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func runHookPostReceive(ctx context.Context, c *cli.Command) error {
313313
setup(ctx, c.Bool("debug"))
314314

315315
// First of all run update-server-info no matter what
316-
if _, _, err := gitcmd.NewCommand("update-server-info").RunStdString(ctx, nil); err != nil {
316+
if _, _, err := gitcmd.NewCommand("update-server-info").RunStdString(ctx); err != nil {
317317
return fmt.Errorf("failed to call 'git update-server-info': %w", err)
318318
}
319319

models/migrations/v1_12/v128.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,17 @@ func FixMergeBase(ctx context.Context, x *xorm.Engine) error {
8484

8585
if !pr.HasMerged {
8686
var err error
87-
pr.MergeBase, _, err = gitcmd.NewCommand("merge-base").AddDashesAndList(pr.BaseBranch, gitRefName).RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
87+
pr.MergeBase, _, err = gitcmd.NewCommand("merge-base").AddDashesAndList(pr.BaseBranch, gitRefName).WithDir(repoPath).RunStdString(ctx)
8888
if err != nil {
8989
var err2 error
90-
pr.MergeBase, _, err2 = gitcmd.NewCommand("rev-parse").AddDynamicArguments(git.BranchPrefix+pr.BaseBranch).RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
90+
pr.MergeBase, _, err2 = gitcmd.NewCommand("rev-parse").AddDynamicArguments(git.BranchPrefix + pr.BaseBranch).WithDir(repoPath).RunStdString(ctx)
9191
if err2 != nil {
9292
log.Error("Unable to get merge base for PR ID %d, Index %d in %s/%s. Error: %v & %v", pr.ID, pr.Index, baseRepo.OwnerName, baseRepo.Name, err, err2)
9393
continue
9494
}
9595
}
9696
} else {
97-
parentsString, _, err := gitcmd.NewCommand("rev-list", "--parents", "-n", "1").AddDynamicArguments(pr.MergedCommitID).RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
97+
parentsString, _, err := gitcmd.NewCommand("rev-list", "--parents", "-n", "1").AddDynamicArguments(pr.MergedCommitID).WithDir(repoPath).RunStdString(ctx)
9898
if err != nil {
9999
log.Error("Unable to get parents for merged PR ID %d, Index %d in %s/%s. Error: %v", pr.ID, pr.Index, baseRepo.OwnerName, baseRepo.Name, err)
100100
continue
@@ -108,7 +108,7 @@ func FixMergeBase(ctx context.Context, x *xorm.Engine) error {
108108
refs = append(refs, gitRefName)
109109
cmd := gitcmd.NewCommand("merge-base").AddDashesAndList(refs...)
110110

111-
pr.MergeBase, _, err = cmd.RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
111+
pr.MergeBase, _, err = cmd.WithDir(repoPath).RunStdString(ctx)
112112
if err != nil {
113113
log.Error("Unable to get merge base for merged PR ID %d, Index %d in %s/%s. Error: %v", pr.ID, pr.Index, baseRepo.OwnerName, baseRepo.Name, err)
114114
continue

models/migrations/v1_12/v134.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func RefixMergeBase(ctx context.Context, x *xorm.Engine) error {
8080

8181
gitRefName := fmt.Sprintf("refs/pull/%d/head", pr.Index)
8282

83-
parentsString, _, err := gitcmd.NewCommand("rev-list", "--parents", "-n", "1").AddDynamicArguments(pr.MergedCommitID).RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
83+
parentsString, _, err := gitcmd.NewCommand("rev-list", "--parents", "-n", "1").AddDynamicArguments(pr.MergedCommitID).WithDir(repoPath).RunStdString(ctx)
8484
if err != nil {
8585
log.Error("Unable to get parents for merged PR ID %d, Index %d in %s/%s. Error: %v", pr.ID, pr.Index, baseRepo.OwnerName, baseRepo.Name, err)
8686
continue
@@ -95,7 +95,7 @@ func RefixMergeBase(ctx context.Context, x *xorm.Engine) error {
9595
refs = append(refs, gitRefName)
9696
cmd := gitcmd.NewCommand("merge-base").AddDashesAndList(refs...)
9797

98-
pr.MergeBase, _, err = cmd.RunStdString(ctx, &gitcmd.RunOpts{Dir: repoPath})
98+
pr.MergeBase, _, err = cmd.WithDir(repoPath).RunStdString(ctx)
9999
if err != nil {
100100
log.Error("Unable to get merge base for merged PR ID %d, Index %d in %s/%s. Error: %v", pr.ID, pr.Index, baseRepo.OwnerName, baseRepo.Name, err)
101101
continue
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2025 The Gitea Authors. All rights reserved.
22
// SPDX-License-Identifier: MIT
33

4-
package git
4+
package repo
55

66
import (
77
"testing"

models/repo/archiver.go

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"time"
1212

1313
"code.gitea.io/gitea/models/db"
14-
"code.gitea.io/gitea/modules/git"
1514
"code.gitea.io/gitea/modules/timeutil"
1615
"code.gitea.io/gitea/modules/util"
1716

@@ -27,11 +26,46 @@ const (
2726
ArchiverReady // it's ready
2827
)
2928

29+
// ArchiveType archive types
30+
type ArchiveType int
31+
32+
const (
33+
ArchiveUnknown ArchiveType = iota
34+
ArchiveZip // 1
35+
ArchiveTarGz // 2
36+
ArchiveBundle // 3
37+
)
38+
39+
// String converts an ArchiveType to string: the extension of the archive file without prefix dot
40+
func (a ArchiveType) String() string {
41+
switch a {
42+
case ArchiveZip:
43+
return "zip"
44+
case ArchiveTarGz:
45+
return "tar.gz"
46+
case ArchiveBundle:
47+
return "bundle"
48+
}
49+
return "unknown"
50+
}
51+
52+
func SplitArchiveNameType(s string) (string, ArchiveType) {
53+
switch {
54+
case strings.HasSuffix(s, ".zip"):
55+
return strings.TrimSuffix(s, ".zip"), ArchiveZip
56+
case strings.HasSuffix(s, ".tar.gz"):
57+
return strings.TrimSuffix(s, ".tar.gz"), ArchiveTarGz
58+
case strings.HasSuffix(s, ".bundle"):
59+
return strings.TrimSuffix(s, ".bundle"), ArchiveBundle
60+
}
61+
return s, ArchiveUnknown
62+
}
63+
3064
// RepoArchiver represents all archivers
3165
type RepoArchiver struct { //revive:disable-line:exported
32-
ID int64 `xorm:"pk autoincr"`
33-
RepoID int64 `xorm:"index unique(s)"`
34-
Type git.ArchiveType `xorm:"unique(s)"`
66+
ID int64 `xorm:"pk autoincr"`
67+
RepoID int64 `xorm:"index unique(s)"`
68+
Type ArchiveType `xorm:"unique(s)"`
3569
Status ArchiverStatus
3670
CommitID string `xorm:"VARCHAR(64) unique(s)"`
3771
CreatedUnix timeutil.TimeStamp `xorm:"INDEX NOT NULL created"`
@@ -56,15 +90,15 @@ func repoArchiverForRelativePath(relativePath string) (*RepoArchiver, error) {
5690
if err != nil {
5791
return nil, util.NewInvalidArgumentErrorf("invalid storage path: invalid repo id")
5892
}
59-
commitID, archiveType := git.SplitArchiveNameType(parts[2])
60-
if archiveType == git.ArchiveUnknown {
93+
commitID, archiveType := SplitArchiveNameType(parts[2])
94+
if archiveType == ArchiveUnknown {
6195
return nil, util.NewInvalidArgumentErrorf("invalid storage path: invalid archive type")
6296
}
6397
return &RepoArchiver{RepoID: repoID, CommitID: commitID, Type: archiveType}, nil
6498
}
6599

66100
// GetRepoArchiver get an archiver
67-
func GetRepoArchiver(ctx context.Context, repoID int64, tp git.ArchiveType, commitID string) (*RepoArchiver, error) {
101+
func GetRepoArchiver(ctx context.Context, repoID int64, tp ArchiveType, commitID string) (*RepoArchiver, error) {
68102
var archiver RepoArchiver
69103
has, err := db.GetEngine(ctx).Where("repo_id=?", repoID).And("`type`=?", tp).And("commit_id=?", commitID).Get(&archiver)
70104
if err != nil {

modules/git/attribute/batch.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,12 @@ func NewBatchChecker(repo *git.Repository, treeish string, attributes []string)
7777
_ = lw.Close()
7878
}()
7979
stdErr := new(bytes.Buffer)
80-
err := cmd.Run(ctx, &gitcmd.RunOpts{
81-
Env: envs,
82-
Dir: repo.Path,
83-
Stdin: stdinReader,
84-
Stdout: lw,
85-
Stderr: stdErr,
86-
})
80+
err := cmd.WithEnv(envs).
81+
WithDir(repo.Path).
82+
WithStdin(stdinReader).
83+
WithStdout(lw).
84+
WithStderr(stdErr).
85+
Run(ctx)
8786

8887
if err != nil && !git.IsErrCanceledOrKilled(err) {
8988
log.Error("Attribute checker for commit %s exits with error: %v", treeish, err)

modules/git/attribute/checker.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,11 @@ func CheckAttributes(ctx context.Context, gitRepo *git.Repository, treeish strin
7171
stdOut := new(bytes.Buffer)
7272
stdErr := new(bytes.Buffer)
7373

74-
if err := cmd.Run(ctx, &gitcmd.RunOpts{
75-
Env: append(os.Environ(), envs...),
76-
Dir: gitRepo.Path,
77-
Stdout: stdOut,
78-
Stderr: stdErr,
79-
}); err != nil {
74+
if err := cmd.WithEnv(append(os.Environ(), envs...)).
75+
WithDir(gitRepo.Path).
76+
WithStdout(stdOut).
77+
WithStderr(stdErr).
78+
Run(ctx); err != nil {
8079
return nil, fmt.Errorf("failed to run check-attr: %w\n%s\n%s", err, stdOut.String(), stdErr.String())
8180
}
8281

modules/git/batch_reader.go

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@ type WriteCloserError interface {
3131
func ensureValidGitRepository(ctx context.Context, repoPath string) error {
3232
stderr := strings.Builder{}
3333
err := gitcmd.NewCommand("rev-parse").
34-
Run(ctx, &gitcmd.RunOpts{
35-
Dir: repoPath,
36-
Stderr: &stderr,
37-
})
34+
WithDir(repoPath).
35+
WithStderr(&stderr).
36+
Run(ctx)
3837
if err != nil {
3938
return gitcmd.ConcatenateError(err, (&stderr).String())
4039
}
@@ -63,14 +62,12 @@ func catFileBatchCheck(ctx context.Context, repoPath string) (WriteCloserError,
6362
go func() {
6463
stderr := strings.Builder{}
6564
err := gitcmd.NewCommand("cat-file", "--batch-check").
66-
Run(ctx, &gitcmd.RunOpts{
67-
Dir: repoPath,
68-
Stdin: batchStdinReader,
69-
Stdout: batchStdoutWriter,
70-
Stderr: &stderr,
71-
72-
UseContextTimeout: true,
73-
})
65+
WithDir(repoPath).
66+
WithStdin(batchStdinReader).
67+
WithStdout(batchStdoutWriter).
68+
WithStderr(&stderr).
69+
WithUseContextTimeout(true).
70+
Run(ctx)
7471
if err != nil {
7572
_ = batchStdoutWriter.CloseWithError(gitcmd.ConcatenateError(err, (&stderr).String()))
7673
_ = batchStdinReader.CloseWithError(gitcmd.ConcatenateError(err, (&stderr).String()))
@@ -111,14 +108,12 @@ func catFileBatch(ctx context.Context, repoPath string) (WriteCloserError, *bufi
111108
go func() {
112109
stderr := strings.Builder{}
113110
err := gitcmd.NewCommand("cat-file", "--batch").
114-
Run(ctx, &gitcmd.RunOpts{
115-
Dir: repoPath,
116-
Stdin: batchStdinReader,
117-
Stdout: batchStdoutWriter,
118-
Stderr: &stderr,
119-
120-
UseContextTimeout: true,
121-
})
111+
WithDir(repoPath).
112+
WithStdin(batchStdinReader).
113+
WithStdout(batchStdoutWriter).
114+
WithStderr(&stderr).
115+
WithUseContextTimeout(true).
116+
Run(ctx)
122117
if err != nil {
123118
_ = batchStdoutWriter.CloseWithError(gitcmd.ConcatenateError(err, (&stderr).String()))
124119
_ = batchStdinReader.CloseWithError(gitcmd.ConcatenateError(err, (&stderr).String()))

0 commit comments

Comments
 (0)