Skip to content

Commit baf78c3

Browse files
author
zjj
committed
* 'main' of https://github.com/go-gitea/gitea: Change initial TrustModel to committer (go-gitea#18335) refactor httplib (go-gitea#18338) Propagate context and ensure git commands run in request context (go-gitea#17868) Upgrade Alpine from 3.13 to 3.15 (go-gitea#18050) [skip ci] Updated translations via Crowdin Stop trimming preceding and suffixing spaces from editor filenames (go-gitea#18334) [skip ci] Updated translations via Crowdin Left-Align text in Unicode warning boxes (go-gitea#18331) Only warn on bidi but still escape non-bidi (go-gitea#18333) Fix incorrect OAuth message (go-gitea#18332) [skip ci] Updated translations via Crowdin Changelog for 1.16.0-rc1 (go-gitea#18309)
2 parents a27850c + 7427b81 commit baf78c3

File tree

213 files changed

+5214
-1504
lines changed

Some content is hidden

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

213 files changed

+5214
-1504
lines changed

CHANGELOG.md

Lines changed: 295 additions & 0 deletions
Large diffs are not rendered by default.

Dockerfile

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
2-
###################################
3-
#Build stage - temporarily using techknowlogick image until we upgrade to latest official alpine/go image
4-
FROM techknowlogick/go:1.17-alpine3.13 AS build-env
1+
#Build stage
2+
FROM golang:1.17-alpine3.15 AS build-env
53

64
ARG GOPROXY
75
ENV GOPROXY ${GOPROXY:-direct}
@@ -25,7 +23,7 @@ RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
2523
# Begin env-to-ini build
2624
RUN go build contrib/environment-to-ini/environment-to-ini.go
2725

28-
FROM alpine:3.13
26+
FROM alpine:3.15
2927
LABEL maintainer="maintainers@gitea.io"
3028

3129
EXPOSE 22 3000

Dockerfile.rootless

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
2-
###################################
3-
#Build stage - temporarily using techknowlogick image until we upgrade to latest official alpine/go image
4-
FROM techknowlogick/go:1.17-alpine3.13 AS build-env
1+
#Build stage
2+
FROM golang:1.17-alpine3.15 AS build-env
53

64
ARG GOPROXY
75
ENV GOPROXY ${GOPROXY:-direct}
@@ -25,7 +23,7 @@ RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \
2523
# Begin env-to-ini build
2624
RUN go build contrib/environment-to-ini/environment-to-ini.go
2725

28-
FROM alpine:3.13
26+
FROM alpine:3.15
2927
LABEL maintainer="maintainers@gitea.io"
3028

3129
EXPOSE 2222 3000

cmd/admin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ func runRepoSyncReleases(_ *cli.Context) error {
669669
log.Trace("Processing next %d repos of %d", len(repos), count)
670670
for _, repo := range repos {
671671
log.Trace("Synchronizing repo %s with path %s", repo.FullName(), repo.RepoPath())
672-
gitRepo, err := git.OpenRepository(repo.RepoPath())
672+
gitRepo, err := git.OpenRepositoryCtx(ctx, repo.RepoPath())
673673
if err != nil {
674674
log.Warn("OpenRepository: %v", err)
675675
continue

cmd/doctor.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package cmd
66

77
import (
8-
"context"
98
"fmt"
109
golog "log"
1110
"os"
@@ -116,7 +115,7 @@ func runRecreateTable(ctx *cli.Context) error {
116115
}
117116
recreateTables := migrations.RecreateTables(beans...)
118117

119-
return db.InitEngineWithMigration(context.Background(), func(x *xorm.Engine) error {
118+
return db.InitEngineWithMigration(stdCtx, func(x *xorm.Engine) error {
120119
if err := migrations.EnsureUpToDate(x); err != nil {
121120
return err
122121
}

docker/root/usr/bin/entrypoint

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/bin/sh
22

3+
# Protect against buggy runc in docker <20.10.6 causing problems in with Alpine >= 3.14
4+
if [ ! -x /bin/sh ]; then
5+
echo "Executable test for /bin/sh failed. Your Docker version is too old to run Alpine 3.14+ and Gitea. You must upgrade Docker.";
6+
exit 1;
7+
fi
8+
39
if [ "${USER}" != "git" ]; then
410
# rename user
511
sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd

docker/rootless/usr/local/bin/docker-entrypoint.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/bin/sh
22

3+
# Protect against buggy runc in docker <20.10.6 causing problems in with Alpine >= 3.14
4+
if [ ! -x /bin/sh ]; then
5+
echo "Executable test for /bin/sh failed. Your Docker version is too old to run Alpine 3.14+ and Gitea. You must upgrade Docker.";
6+
exit 1;
7+
fi
8+
39
if [ -x /usr/local/bin/docker-setup.sh ]; then
410
/usr/local/bin/docker-setup.sh || { echo 'docker setup failed' ; exit 1; }
511
fi

integrations/api_repo_file_helpers.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package integrations
77
import (
88
repo_model "code.gitea.io/gitea/models/repo"
99
user_model "code.gitea.io/gitea/models/user"
10+
"code.gitea.io/gitea/modules/git"
1011
api "code.gitea.io/gitea/modules/structs"
1112
files_service "code.gitea.io/gitea/services/repository/files"
1213
)
@@ -20,7 +21,7 @@ func createFileInBranch(user *user_model.User, repo *repo_model.Repository, tree
2021
Author: nil,
2122
Committer: nil,
2223
}
23-
return files_service.CreateOrUpdateRepoFile(repo, user, opts)
24+
return files_service.CreateOrUpdateRepoFile(git.DefaultContext, repo, user, opts)
2425
}
2526

2627
func createFile(user *user_model.User, repo *repo_model.Repository, treePath string) (*api.FileResponse, error) {

integrations/api_repo_get_contents_list_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func testAPIGetContentsList(t *testing.T, u *url.URL) {
7272

7373
// Make a new branch in repo1
7474
newBranch := "test_branch"
75-
err := repo_service.CreateNewBranch(user2, repo1, repo1.DefaultBranch, newBranch)
75+
err := repo_service.CreateNewBranch(git.DefaultContext, user2, repo1, repo1.DefaultBranch, newBranch)
7676
assert.NoError(t, err)
7777
// Get the commit ID of the default branch
7878
gitRepo, err := git.OpenRepository(repo1.RepoPath())

integrations/api_repo_get_contents_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func testAPIGetContents(t *testing.T, u *url.URL) {
7373

7474
// Make a new branch in repo1
7575
newBranch := "test_branch"
76-
err := repo_service.CreateNewBranch(user2, repo1, repo1.DefaultBranch, newBranch)
76+
err := repo_service.CreateNewBranch(git.DefaultContext, user2, repo1, repo1.DefaultBranch, newBranch)
7777
assert.NoError(t, err)
7878
// Get the commit ID of the default branch
7979
gitRepo, err := git.OpenRepository(repo1.RepoPath())

integrations/git_helper_for_declarative_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func doGitCloneFail(u *url.URL) func(*testing.T) {
128128
tmpDir, err := os.MkdirTemp("", "doGitCloneFail")
129129
assert.NoError(t, err)
130130
defer util.RemoveAll(tmpDir)
131-
assert.Error(t, git.Clone(u.String(), tmpDir, git.CloneRepoOptions{}))
131+
assert.Error(t, git.Clone(git.DefaultContext, u.String(), tmpDir, git.CloneRepoOptions{}))
132132
exist, err := util.IsExist(filepath.Join(tmpDir, "README.md"))
133133
assert.NoError(t, err)
134134
assert.False(t, exist)
@@ -138,7 +138,7 @@ func doGitCloneFail(u *url.URL) func(*testing.T) {
138138
func doGitInitTestRepository(dstPath string) func(*testing.T) {
139139
return func(t *testing.T) {
140140
// Init repository in dstPath
141-
assert.NoError(t, git.InitRepository(dstPath, false))
141+
assert.NoError(t, git.InitRepository(git.DefaultContext, dstPath, false))
142142
// forcibly set default branch to master
143143
_, err := git.NewCommand("symbolic-ref", "HEAD", git.BranchPrefix+"master").RunInDir(dstPath)
144144
assert.NoError(t, err)

integrations/mirror_pull_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func TestMirrorPull(t *testing.T) {
8686

8787
release, err := models.GetRelease(repo.ID, "v0.2")
8888
assert.NoError(t, err)
89-
assert.NoError(t, release_service.DeleteReleaseByID(release.ID, user, true))
89+
assert.NoError(t, release_service.DeleteReleaseByID(ctx, release.ID, user, true))
9090

9191
ok = mirror_service.SyncPullMirror(ctx, mirror.ID)
9292
assert.True(t, ok)

integrations/pull_merge_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,11 @@ func TestCantMergeConflict(t *testing.T) {
241241
gitRepo, err := git.OpenRepository(repo_model.RepoPath(user1.Name, repo1.Name))
242242
assert.NoError(t, err)
243243

244-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT")
244+
err = pull.Merge(git.DefaultContext, pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT")
245245
assert.Error(t, err, "Merge should return an error due to conflict")
246246
assert.True(t, models.IsErrMergeConflicts(err), "Merge error is not a conflict error")
247247

248-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT")
248+
err = pull.Merge(git.DefaultContext, pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT")
249249
assert.Error(t, err, "Merge should return an error due to conflict")
250250
assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
251251
gitRepo.Close()
@@ -329,7 +329,7 @@ func TestCantMergeUnrelated(t *testing.T) {
329329
BaseBranch: "base",
330330
}).(*models.PullRequest)
331331

332-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "UNRELATED")
332+
err = pull.Merge(git.DefaultContext, pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "UNRELATED")
333333
assert.Error(t, err, "Merge should return an error due to unrelated")
334334
assert.True(t, models.IsErrMergeUnrelatedHistories(err), "Merge error is not a unrelated histories error")
335335
gitRepo.Close()

integrations/pull_update_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"code.gitea.io/gitea/models"
1414
"code.gitea.io/gitea/models/unittest"
1515
user_model "code.gitea.io/gitea/models/user"
16+
"code.gitea.io/gitea/modules/git"
1617
pull_service "code.gitea.io/gitea/services/pull"
1718
repo_service "code.gitea.io/gitea/services/repository"
1819
files_service "code.gitea.io/gitea/services/repository/files"
@@ -28,7 +29,7 @@ func TestAPIPullUpdate(t *testing.T) {
2829
pr := createOutdatedPR(t, user, org26)
2930

3031
//Test GetDiverging
31-
diffCount, err := pull_service.GetDiverging(pr)
32+
diffCount, err := pull_service.GetDiverging(git.DefaultContext, pr)
3233
assert.NoError(t, err)
3334
assert.EqualValues(t, 1, diffCount.Behind)
3435
assert.EqualValues(t, 1, diffCount.Ahead)
@@ -41,7 +42,7 @@ func TestAPIPullUpdate(t *testing.T) {
4142
session.MakeRequest(t, req, http.StatusOK)
4243

4344
//Test GetDiverging after update
44-
diffCount, err = pull_service.GetDiverging(pr)
45+
diffCount, err = pull_service.GetDiverging(git.DefaultContext, pr)
4546
assert.NoError(t, err)
4647
assert.EqualValues(t, 0, diffCount.Behind)
4748
assert.EqualValues(t, 2, diffCount.Ahead)
@@ -56,7 +57,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
5657
pr := createOutdatedPR(t, user, org26)
5758

5859
//Test GetDiverging
59-
diffCount, err := pull_service.GetDiverging(pr)
60+
diffCount, err := pull_service.GetDiverging(git.DefaultContext, pr)
6061
assert.NoError(t, err)
6162
assert.EqualValues(t, 1, diffCount.Behind)
6263
assert.EqualValues(t, 1, diffCount.Ahead)
@@ -69,7 +70,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
6970
session.MakeRequest(t, req, http.StatusOK)
7071

7172
//Test GetDiverging after update
72-
diffCount, err = pull_service.GetDiverging(pr)
73+
diffCount, err = pull_service.GetDiverging(git.DefaultContext, pr)
7374
assert.NoError(t, err)
7475
assert.EqualValues(t, 0, diffCount.Behind)
7576
assert.EqualValues(t, 1, diffCount.Ahead)
@@ -98,7 +99,7 @@ func createOutdatedPR(t *testing.T, actor, forkOrg *user_model.User) *models.Pul
9899
assert.NotEmpty(t, headRepo)
99100

100101
//create a commit on base Repo
101-
_, err = files_service.CreateOrUpdateRepoFile(baseRepo, actor, &files_service.UpdateRepoFileOptions{
102+
_, err = files_service.CreateOrUpdateRepoFile(git.DefaultContext, baseRepo, actor, &files_service.UpdateRepoFileOptions{
102103
TreePath: "File_A",
103104
Message: "Add File A",
104105
Content: "File A",
@@ -121,7 +122,7 @@ func createOutdatedPR(t *testing.T, actor, forkOrg *user_model.User) *models.Pul
121122
assert.NoError(t, err)
122123

123124
//create a commit on head Repo
124-
_, err = files_service.CreateOrUpdateRepoFile(headRepo, actor, &files_service.UpdateRepoFileOptions{
125+
_, err = files_service.CreateOrUpdateRepoFile(git.DefaultContext, headRepo, actor, &files_service.UpdateRepoFileOptions{
125126
TreePath: "File_B",
126127
Message: "Add File on PR branch",
127128
Content: "File B",
@@ -160,7 +161,7 @@ func createOutdatedPR(t *testing.T, actor, forkOrg *user_model.User) *models.Pul
160161
BaseRepo: baseRepo,
161162
Type: models.PullRequestGitea,
162163
}
163-
err = pull_service.NewPullRequest(baseRepo, pullIssue, nil, nil, pullRequest, nil)
164+
err = pull_service.NewPullRequest(git.DefaultContext, baseRepo, pullIssue, nil, nil, pullRequest, nil)
164165
assert.NoError(t, err)
165166

166167
issue := unittest.AssertExistsAndLoadBean(t, &models.Issue{Title: "Test Pull -to-update-"}).(*models.Issue)

integrations/repo_tag_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestCreateNewTagProtected(t *testing.T) {
2929
t.Run("API", func(t *testing.T) {
3030
defer PrintCurrentTest(t)()
3131

32-
err := release.CreateNewTag(owner, repo, "master", "v-1", "first tag")
32+
err := release.CreateNewTag(git.DefaultContext, owner, repo, "master", "v-1", "first tag")
3333
assert.NoError(t, err)
3434

3535
err = models.InsertProtectedTag(&models.ProtectedTag{
@@ -44,11 +44,11 @@ func TestCreateNewTagProtected(t *testing.T) {
4444
})
4545
assert.NoError(t, err)
4646

47-
err = release.CreateNewTag(owner, repo, "master", "v-2", "second tag")
47+
err = release.CreateNewTag(git.DefaultContext, owner, repo, "master", "v-2", "second tag")
4848
assert.Error(t, err)
4949
assert.True(t, models.IsErrProtectedTagName(err))
5050

51-
err = release.CreateNewTag(owner, repo, "master", "v-1.1", "third tag")
51+
err = release.CreateNewTag(git.DefaultContext, owner, repo, "master", "v-1.1", "third tag")
5252
assert.NoError(t, err)
5353
})
5454

integrations/repofiles_delete_test.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
repo_model "code.gitea.io/gitea/models/repo"
1212
"code.gitea.io/gitea/models/unittest"
13+
"code.gitea.io/gitea/modules/git"
1314
api "code.gitea.io/gitea/modules/structs"
1415
"code.gitea.io/gitea/modules/test"
1516
files_service "code.gitea.io/gitea/services/repository/files"
@@ -80,7 +81,7 @@ func testDeleteRepoFile(t *testing.T, u *url.URL) {
8081
opts := getDeleteRepoFileOptions(repo)
8182

8283
t.Run("Delete README.md file", func(t *testing.T) {
83-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
84+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
8485
assert.NoError(t, err)
8586
expectedFileResponse := getExpectedDeleteFileResponse(u)
8687
assert.NotNil(t, fileResponse)
@@ -92,7 +93,7 @@ func testDeleteRepoFile(t *testing.T, u *url.URL) {
9293
})
9394

9495
t.Run("Verify README.md has been deleted", func(t *testing.T) {
95-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
96+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
9697
assert.Nil(t, fileResponse)
9798
expectedError := "repository file does not exist [path: " + opts.TreePath + "]"
9899
assert.EqualError(t, err, expectedError)
@@ -122,7 +123,7 @@ func testDeleteRepoFileWithoutBranchNames(t *testing.T, u *url.URL) {
122123
opts.NewBranch = ""
123124

124125
t.Run("Delete README.md without Branch Name", func(t *testing.T) {
125-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
126+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
126127
assert.NoError(t, err)
127128
expectedFileResponse := getExpectedDeleteFileResponse(u)
128129
assert.NotNil(t, fileResponse)
@@ -151,7 +152,7 @@ func TestDeleteRepoFileErrors(t *testing.T) {
151152
t.Run("Bad branch", func(t *testing.T) {
152153
opts := getDeleteRepoFileOptions(repo)
153154
opts.OldBranch = "bad_branch"
154-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
155+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
155156
assert.Error(t, err)
156157
assert.Nil(t, fileResponse)
157158
expectedError := "branch does not exist [name: " + opts.OldBranch + "]"
@@ -162,7 +163,7 @@ func TestDeleteRepoFileErrors(t *testing.T) {
162163
opts := getDeleteRepoFileOptions(repo)
163164
origSHA := opts.SHA
164165
opts.SHA = "bad_sha"
165-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
166+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
166167
assert.Nil(t, fileResponse)
167168
assert.Error(t, err)
168169
expectedError := "sha does not match [given: " + opts.SHA + ", expected: " + origSHA + "]"
@@ -172,7 +173,7 @@ func TestDeleteRepoFileErrors(t *testing.T) {
172173
t.Run("New branch already exists", func(t *testing.T) {
173174
opts := getDeleteRepoFileOptions(repo)
174175
opts.NewBranch = "develop"
175-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
176+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
176177
assert.Nil(t, fileResponse)
177178
assert.Error(t, err)
178179
expectedError := "branch already exists [name: " + opts.NewBranch + "]"
@@ -182,7 +183,7 @@ func TestDeleteRepoFileErrors(t *testing.T) {
182183
t.Run("TreePath is empty:", func(t *testing.T) {
183184
opts := getDeleteRepoFileOptions(repo)
184185
opts.TreePath = ""
185-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
186+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
186187
assert.Nil(t, fileResponse)
187188
assert.Error(t, err)
188189
expectedError := "path contains a malformed path component [path: ]"
@@ -192,7 +193,7 @@ func TestDeleteRepoFileErrors(t *testing.T) {
192193
t.Run("TreePath is a git directory:", func(t *testing.T) {
193194
opts := getDeleteRepoFileOptions(repo)
194195
opts.TreePath = ".git"
195-
fileResponse, err := files_service.DeleteRepoFile(repo, doer, opts)
196+
fileResponse, err := files_service.DeleteRepoFile(git.DefaultContext, repo, doer, opts)
196197
assert.Nil(t, fileResponse)
197198
assert.Error(t, err)
198199
expectedError := "path contains a malformed path component [path: " + opts.TreePath + "]"

0 commit comments

Comments
 (0)