Skip to content

Commit 96e8813

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: Delete related PullAutoMerge and ReviewState on User/Repo Deletion (go-gitea#19649) Allow custom default merge message with .gitea/default_merge_message/<merge_style>_TEMPLATE.md (go-gitea#18177) Allow to mark files in a PR as viewed (go-gitea#19007) Auto merge pull requests when all checks succeeded via API (go-gitea#9307) Hide private repositories in packages (go-gitea#19584) Only show accessible teams in dashboard dropdown list (go-gitea#19642) prevent double click new issue/pull/comment button (go-gitea#16157) Improve reviewing PR UX (go-gitea#19612) [skip ci] Updated translations via Crowdin Add Changelog v1.16.7 (go-gitea#19575) (go-gitea#19644) Set safe dir for git operations in .drone.yml CI (go-gitea#19641) Add missing `sorting` column in `project_issue` table (go-gitea#19635)
2 parents c756727 + 6a96968 commit 96e8813

File tree

100 files changed

+1949
-292
lines changed

Some content is hidden

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

100 files changed

+1949
-292
lines changed

.drone.yml

+10
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ steps:
235235
image: docker:git
236236
pull: always
237237
commands:
238+
- git config --global --add safe.directory /drone/src
238239
- git fetch --tags --force
239240
when:
240241
event:
@@ -427,6 +428,7 @@ steps:
427428
image: docker:git
428429
pull: always
429430
commands:
431+
- git config --global --add safe.directory /drone/src
430432
- git fetch --tags --force
431433
when:
432434
event:
@@ -628,6 +630,7 @@ steps:
628630
image: docker:git
629631
pull: always
630632
commands:
633+
- git config --global --add safe.directory /drone/src
631634
- git fetch --tags --force
632635

633636
- name: deps-frontend
@@ -746,6 +749,7 @@ steps:
746749
image: docker:git
747750
pull: always
748751
commands:
752+
- git config --global --add safe.directory /drone/src
749753
- git fetch --tags --force
750754

751755
- name: deps-frontend
@@ -891,6 +895,7 @@ steps:
891895
image: docker:git
892896
pull: always
893897
commands:
898+
- git config --global --add safe.directory /drone/src
894899
- git fetch --tags --force
895900

896901
- name: publish
@@ -954,6 +959,7 @@ steps:
954959
image: docker:git
955960
pull: always
956961
commands:
962+
- git config --global --add safe.directory /drone/src
957963
- git fetch --tags --force
958964

959965
- name: publish
@@ -1016,6 +1022,7 @@ steps:
10161022
image: docker:git
10171023
pull: always
10181024
commands:
1025+
- git config --global --add safe.directory /drone/src
10191026
- git fetch --tags --force
10201027

10211028
- name: publish
@@ -1112,6 +1119,7 @@ steps:
11121119
image: docker:git
11131120
pull: always
11141121
commands:
1122+
- git config --global --add safe.directory /drone/src
11151123
- git fetch --tags --force
11161124

11171125
- name: publish
@@ -1175,6 +1183,7 @@ steps:
11751183
image: docker:git
11761184
pull: always
11771185
commands:
1186+
- git config --global --add safe.directory /drone/src
11781187
- git fetch --tags --force
11791188

11801189
- name: publish
@@ -1237,6 +1246,7 @@ steps:
12371246
image: docker:git
12381247
pull: always
12391248
commands:
1249+
- git config --global --add safe.directory /drone/src
12401250
- git fetch --tags --force
12411251

12421252
- name: publish

CHANGELOG.md

+23
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ This changelog goes through all the changes that have been made in each release
44
without substantial changes to our git log; to see the highlights of what has
55
been added to each release, please refer to the [blog](https://blog.gitea.io).
66

7+
## [1.16.7](https://github.com/go-gitea/gitea/releases/tag/v1.16.7) - 2022-05-02
8+
9+
* SECURITY
10+
* Escape git fetch remote (#19487) (#19490)
11+
* BUGFIXES
12+
* Don't overwrite err with nil (#19572) (#19574)
13+
* On Migrations, only write commit-graph if wiki clone was successful (#19563) (#19568)
14+
* Respect DefaultUserIsRestricted system default when creating new user (#19310) (#19560)
15+
* Don't error when branch's commit doesn't exist (#19547) (#19548)
16+
* Support `hostname:port` to pass host matcher's check (#19543) (#19544)
17+
* Prevent intermittent race in attribute reader close (#19537) (#19539)
18+
* Fix 64-bit atomic operations on 32-bit machines (#19531) (#19532)
19+
* Prevent dangling archiver goroutine (#19516) (#19526)
20+
* Fix migrate release from github (#19510) (#19523)
21+
* When view _Siderbar or _Footer, just display once (#19501) (#19522)
22+
* Fix blame page select range error and some typos (#19503)
23+
* Fix name of doctor fix "authorized-keys" in hints (#19464) (#19484)
24+
* User specific repoID or xorm builder conditions for issue search (#19475) (#19476)
25+
* Prevent dangling cat-file calls (goroutine alternative) (#19454) (#19466)
26+
* RepoAssignment ensure to close before overwrite (#19449) (#19460)
27+
* Set correct PR status on 3way on conflict checking (#19457) (#19458)
28+
* Mark TemplateLoading error as "UnprocessableEntity" (#19445) (#19446)
29+
730
## [1.16.6](https://github.com/go-gitea/gitea/releases/tag/v1.16.6) - 2022-04-20
831

932
* ENHANCEMENTS

docs/config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ params:
1818
description: Git with a cup of tea
1919
author: The Gitea Authors
2020
website: https://docs.gitea.io
21-
version: 1.16.6
21+
version: 1.16.7
2222
minGoVersion: 1.17
2323
goVersion: 1.18
2424
minNodeVersion: 14

docs/content/doc/usage/issue-pull-request-templates.en-us.md

+33
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,39 @@ Possible file names for PR templates:
4343
- `.github/PULL_REQUEST_TEMPLATE.md`
4444
- `.github/pull_request_template.md`
4545

46+
Possible file names for PR default merge message templates:
47+
48+
- `.gitea/default_merge_message/MERGE_TEMPLATE.md`
49+
- `.gitea/default_merge_message/REBASE_TEMPLATE.md`
50+
- `.gitea/default_merge_message/REBASE-MERGE_TEMPLATE.md`
51+
- `.gitea/default_merge_message/SQUASH_TEMPLATE.md`
52+
- `.gitea/default_merge_message/MANUALLY-MERGED_TEMPLATE.md`
53+
- `.gitea/default_merge_message/REBASE-UPDATE-ONLY_TEMPLATE.md`
54+
55+
Possible file names for PR default merge message templates:
56+
57+
- `.gitea/default_merge_message/MERGE_TEMPLATE.md`
58+
- `.gitea/default_merge_message/REBASE_TEMPLATE.md`
59+
- `.gitea/default_merge_message/REBASE-MERGE_TEMPLATE.md`
60+
- `.gitea/default_merge_message/SQUASH_TEMPLATE.md`
61+
- `.gitea/default_merge_message/MANUALLY-MERGED_TEMPLATE.md`
62+
- `.gitea/default_merge_message/REBASE-UPDATE-ONLY_TEMPLATE.md`
63+
64+
You can use the following variables enclosed in `${}` inside these templates which follow [os.Expand](https://pkg.go.dev/os#Expand) syntax:
65+
66+
- BaseRepoOwnerName: Base repository owner name of this pull request
67+
- BaseRepoName: Base repository name of this pull request
68+
- BaseBranch: Base repository target branch name of this pull request
69+
- HeadRepoOwnerName: Head repository owner name of this pull request
70+
- HeadRepoName: Head repository name of this pull request
71+
- HeadBranch: Head repository branch name of this pull request
72+
- PullRequestTitle: Pull request's title
73+
- PullRequestDescription: Pull request's description
74+
- PullRequestPosterName: Pull request's poster name
75+
- PullRequestIndex: Pull request's index number
76+
- PullRequestReference: Pull request's reference char with index number. i.e. #1, !2
77+
- ClosingIssues: return a string contains all issues which will be closed by this pull request i.e. `close #1, close #2`
78+
4679
Additionally, the New Issue page URL can be suffixed with `?title=Issue+Title&body=Issue+Text` and the form will be populated with those strings. Those strings will be used instead of the template if there is one.
4780

4881
## Issue Template Directory

integrations/api_helper_for_declarative_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,37 @@ func doAPIManuallyMergePullRequest(ctx APITestContext, owner, repo, commitID str
314314
}
315315
}
316316

317+
func doAPIAutoMergePullRequest(ctx APITestContext, owner, repo string, index int64) func(*testing.T) {
318+
return func(t *testing.T) {
319+
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/merge?token=%s",
320+
owner, repo, index, ctx.Token)
321+
req := NewRequestWithJSON(t, http.MethodPost, urlStr, &forms.MergePullRequestForm{
322+
MergeMessageField: "doAPIMergePullRequest Merge",
323+
Do: string(repo_model.MergeStyleMerge),
324+
MergeWhenChecksSucceed: true,
325+
})
326+
327+
if ctx.ExpectedCode != 0 {
328+
ctx.Session.MakeRequest(t, req, ctx.ExpectedCode)
329+
return
330+
}
331+
ctx.Session.MakeRequest(t, req, 200)
332+
}
333+
}
334+
335+
func doAPICancelAutoMergePullRequest(ctx APITestContext, owner, repo string, index int64) func(*testing.T) {
336+
return func(t *testing.T) {
337+
urlStr := fmt.Sprintf("/api/v1/repos/%s/%s/pulls/%d/merge?token=%s",
338+
owner, repo, index, ctx.Token)
339+
req := NewRequest(t, http.MethodDelete, urlStr)
340+
if ctx.ExpectedCode != 0 {
341+
ctx.Session.MakeRequest(t, req, ctx.ExpectedCode)
342+
return
343+
}
344+
ctx.Session.MakeRequest(t, req, 204)
345+
}
346+
}
347+
317348
func doAPIGetBranch(ctx APITestContext, branch string, callback ...func(*testing.T, api.Branch)) func(*testing.T) {
318349
return func(t *testing.T) {
319350
req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/branches/%s?token=%s", ctx.Username, ctx.Reponame, branch, ctx.Token)

integrations/api_packages_test.go

+38
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,44 @@ func TestPackageAPI(t *testing.T) {
7171
assert.Equal(t, packageVersion, p.Version)
7272
assert.NotNil(t, p.Creator)
7373
assert.Equal(t, user.Name, p.Creator.UserName)
74+
75+
t.Run("RepositoryLink", func(t *testing.T) {
76+
defer PrintCurrentTest(t)()
77+
78+
p, err := packages_model.GetPackageByName(db.DefaultContext, user.ID, packages_model.TypeGeneric, packageName)
79+
assert.NoError(t, err)
80+
81+
// no repository link
82+
req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s/%s?token=%s", user.Name, packageName, packageVersion, token))
83+
resp := MakeRequest(t, req, http.StatusOK)
84+
85+
var ap1 *api.Package
86+
DecodeJSON(t, resp, &ap1)
87+
assert.Nil(t, ap1.Repository)
88+
89+
// link to public repository
90+
assert.NoError(t, packages_model.SetRepositoryLink(db.DefaultContext, p.ID, 1))
91+
92+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s/%s?token=%s", user.Name, packageName, packageVersion, token))
93+
resp = MakeRequest(t, req, http.StatusOK)
94+
95+
var ap2 *api.Package
96+
DecodeJSON(t, resp, &ap2)
97+
assert.NotNil(t, ap2.Repository)
98+
assert.EqualValues(t, 1, ap2.Repository.ID)
99+
100+
// link to private repository
101+
assert.NoError(t, packages_model.SetRepositoryLink(db.DefaultContext, p.ID, 2))
102+
103+
req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s/generic/%s/%s?token=%s", user.Name, packageName, packageVersion, token))
104+
resp = MakeRequest(t, req, http.StatusOK)
105+
106+
var ap3 *api.Package
107+
DecodeJSON(t, resp, &ap3)
108+
assert.Nil(t, ap3.Repository)
109+
110+
assert.NoError(t, packages_model.UnlinkRepositoryFromAllPackages(db.DefaultContext, 2))
111+
})
74112
})
75113

76114
t.Run("ListPackageFiles", func(t *testing.T) {

integrations/git_test.go

+83
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func testGit(t *testing.T, u *url.URL) {
8282

8383
t.Run("CreateAgitFlowPull", doCreateAgitFlowPull(dstPath, &httpContext, "master", "test/head"))
8484
t.Run("BranchProtectMerge", doBranchProtectPRMerge(&httpContext, dstPath))
85+
t.Run("AutoMerge", doAutoPRMerge(&httpContext, dstPath))
8586
t.Run("CreatePRAndSetManuallyMerged", doCreatePRAndSetManuallyMerged(httpContext, httpContext, dstPath, "master", "test-manually-merge"))
8687
t.Run("MergeFork", func(t *testing.T) {
8788
defer PrintCurrentTest(t)()
@@ -615,6 +616,88 @@ func doBranchDelete(ctx APITestContext, owner, repo, branch string) func(*testin
615616
}
616617
}
617618

619+
func doAutoPRMerge(baseCtx *APITestContext, dstPath string) func(t *testing.T) {
620+
return func(t *testing.T) {
621+
defer PrintCurrentTest(t)()
622+
623+
ctx := NewAPITestContext(t, baseCtx.Username, baseCtx.Reponame)
624+
625+
t.Run("CheckoutProtected", doGitCheckoutBranch(dstPath, "protected"))
626+
t.Run("PullProtected", doGitPull(dstPath, "origin", "protected"))
627+
t.Run("GenerateCommit", func(t *testing.T) {
628+
_, err := generateCommitWithNewData(littleSize, dstPath, "user2@example.com", "User Two", "branch-data-file-")
629+
assert.NoError(t, err)
630+
})
631+
t.Run("PushToUnprotectedBranch", doGitPushTestRepository(dstPath, "origin", "protected:unprotected3"))
632+
var pr api.PullRequest
633+
var err error
634+
t.Run("CreatePullRequest", func(t *testing.T) {
635+
pr, err = doAPICreatePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, "protected", "unprotected3")(t)
636+
assert.NoError(t, err)
637+
})
638+
639+
// Request repository commits page
640+
req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/pulls/%d/commits", baseCtx.Username, baseCtx.Reponame, pr.Index))
641+
resp := ctx.Session.MakeRequest(t, req, http.StatusOK)
642+
doc := NewHTMLParser(t, resp.Body)
643+
644+
// Get first commit URL
645+
commitURL, exists := doc.doc.Find("#commits-table tbody tr td.sha a").Last().Attr("href")
646+
assert.True(t, exists)
647+
assert.NotEmpty(t, commitURL)
648+
649+
commitID := path.Base(commitURL)
650+
651+
// Call API to add Pending status for commit
652+
t.Run("CreateStatus", doAPICreateCommitStatus(ctx, commitID, api.CommitStatusPending))
653+
654+
// Cancel not existing auto merge
655+
ctx.ExpectedCode = http.StatusNotFound
656+
t.Run("CancelAutoMergePR", doAPICancelAutoMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index))
657+
658+
// Add auto merge request
659+
ctx.ExpectedCode = http.StatusCreated
660+
t.Run("AutoMergePR", doAPIAutoMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index))
661+
662+
// Can not create schedule twice
663+
ctx.ExpectedCode = http.StatusConflict
664+
t.Run("AutoMergePRTwice", doAPIAutoMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index))
665+
666+
// Cancel auto merge request
667+
ctx.ExpectedCode = http.StatusNoContent
668+
t.Run("CancelAutoMergePR", doAPICancelAutoMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index))
669+
670+
// Add auto merge request
671+
ctx.ExpectedCode = http.StatusCreated
672+
t.Run("AutoMergePR", doAPIAutoMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index))
673+
674+
// Check pr status
675+
ctx.ExpectedCode = 0
676+
pr, err = doAPIGetPullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index)(t)
677+
assert.NoError(t, err)
678+
assert.False(t, pr.HasMerged)
679+
680+
// Call API to add Failure status for commit
681+
t.Run("CreateStatus", doAPICreateCommitStatus(ctx, commitID, api.CommitStatusFailure))
682+
683+
// Check pr status
684+
pr, err = doAPIGetPullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index)(t)
685+
assert.NoError(t, err)
686+
assert.False(t, pr.HasMerged)
687+
688+
// Call API to add Success status for commit
689+
t.Run("CreateStatus", doAPICreateCommitStatus(ctx, commitID, api.CommitStatusSuccess))
690+
691+
// wait to let gitea merge stuff
692+
time.Sleep(time.Second)
693+
694+
// test pr status
695+
pr, err = doAPIGetPullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index)(t)
696+
assert.NoError(t, err)
697+
assert.True(t, pr.HasMerged)
698+
}
699+
}
700+
618701
func doCreateAgitFlowPull(dstPath string, ctx *APITestContext, baseBranch, headBranch string) func(t *testing.T) {
619702
return func(t *testing.T) {
620703
defer PrintCurrentTest(t)()

integrations/pull_merge_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package integrations
66

77
import (
88
"bytes"
9+
"context"
910
"fmt"
1011
"net/http"
1112
"net/http/httptest"
@@ -243,11 +244,11 @@ func TestCantMergeConflict(t *testing.T) {
243244
gitRepo, err := git.OpenRepository(git.DefaultContext, repo_model.RepoPath(user1.Name, repo1.Name))
244245
assert.NoError(t, err)
245246

246-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT")
247+
err = pull.Merge(context.Background(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT")
247248
assert.Error(t, err, "Merge should return an error due to conflict")
248249
assert.True(t, models.IsErrMergeConflicts(err), "Merge error is not a conflict error")
249250

250-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT")
251+
err = pull.Merge(context.Background(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT")
251252
assert.Error(t, err, "Merge should return an error due to conflict")
252253
assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
253254
gitRepo.Close()
@@ -342,7 +343,7 @@ func TestCantMergeUnrelated(t *testing.T) {
342343
BaseBranch: "base",
343344
}).(*models.PullRequest)
344345

345-
err = pull.Merge(pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "UNRELATED")
346+
err = pull.Merge(context.Background(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "UNRELATED")
346347
assert.Error(t, err, "Merge should return an error due to unrelated")
347348
assert.True(t, models.IsErrMergeUnrelatedHistories(err), "Merge error is not a unrelated histories error")
348349
gitRepo.Close()

0 commit comments

Comments
 (0)