Skip to content

Commit cbb54ce

Browse files
committed
Merge branch 'main' of https://github.com/go-gitea/gitea into fix-repo-links
2 parents 77b5402 + 4fdb09d commit cbb54ce

File tree

243 files changed

+8201
-12136
lines changed

Some content is hidden

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

243 files changed

+8201
-12136
lines changed

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Gitea DevContainer",
3-
"image": "mcr.microsoft.com/devcontainers/go:1.20-bullseye",
3+
"image": "mcr.microsoft.com/devcontainers/go:1.21-bullseye",
44
"features": {
55
// installs nodejs into container
66
"ghcr.io/devcontainers/features/node:1": {

.drone.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ steps:
4141
path: /go
4242

4343
- name: static
44-
image: techknowlogick/xgo:go-1.20.x
44+
image: techknowlogick/xgo:go-1.21.x
4545
pull: always
4646
commands:
47-
# Upgrade to node 20 once https://github.com/techknowlogick/xgo/issues/163 is resolved
48-
- curl -sL https://deb.nodesource.com/setup_16.x | bash - && apt-get -qqy install nodejs
47+
- curl -sL https://deb.nodesource.com/setup_20.x | bash - && apt-get -qqy install nodejs
4948
- export PATH=$PATH:$GOPATH/bin
5049
- make release
5150
environment:

.github/workflows/files-changed.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ jobs:
7171
7272
swagger:
7373
- "templates/swagger/v1_json.tmpl"
74+
- "Makefile"

CHANGELOG.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,25 @@ 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.com).
66

7-
## [1.20.3](https://github.com/go-gitea/gitea/releases/tag/v1.20.3) - 2023-08-07
7+
## [1.20.3](https://github.com/go-gitea/gitea/releases/tag/v1.20.3) - 2023-08-20
88

99
* BREAKING
1010
* Fix the wrong derive path (#26271) (#26318)
1111
* SECURITY
1212
* Fix API leaking Usermail if not logged in (#25097) (#26350)
13+
* FEATURES
14+
* Add ThreadID parameter for Telegram webhooks (#25996) (#26480)
1315
* ENHANCEMENTS
16+
* Add minimum polyfill to support "relative-time-element" in PaleMoon (#26575) (#26578)
17+
* Fix dark theme highlight for "NameNamespace" (#26519) (#26527)
18+
* Detect ogg mime-type as audio or video (#26494) (#26505)
19+
* Use `object-fit: contain` for oauth2 custom icons (#26493) (#26498)
20+
* Move dropzone progress bar to bottom to show filename when uploading (#26492) (#26497)
21+
* Remove last newline from config file (#26468) (#26471)
22+
* Minio: add missing region on client initialization (#26412) (#26438)
23+
* Add pull request review request webhook event (#26401) (#26407)
24+
* Fix text truncate (#26354) (#26384)
25+
* Fix incorrect color of selected assignees when create issue (#26324) (#26372)
1426
* Display human-readable text instead of cryptic filemodes (#26352) (#26358)
1527
* Hide `last indexed SHA` when a repo could not be indexed yet (#26340) (#26345)
1628
* Fix the topic validation rule and suport dots (#26286) (#26303)
@@ -19,6 +31,23 @@ been added to each release, please refer to the [blog](https://blog.gitea.com).
1931
* Fix commit compare style (#26209) (#26226)
2032
* Warn instead of reporting an error when a webhook cannot be found (#26039) (#26211)
2133
* BUGFIXES
34+
* Use "input" event instead of "keyup" event for migration form (#26602) (#26605)
35+
* Do not use deprecated log config options by default (#26592) (#26600)
36+
* Fix "issueReposQueryPattern does not match query" (#26556) (#26564)
37+
* Sync repo's IsEmpty status correctly (#26517) (#26560)
38+
* Fix project filter bugs (#26490) (#26558)
39+
* Use `hidden` over `clip` for text truncation (#26520) (#26522)
40+
* Set "type=button" for editor's toolbar buttons (#26510) (#26518)
41+
* Fix NuGet search endpoints (#25613) (#26499)
42+
* Fix storage path logic especially for relative paths (#26441) (#26481)
43+
* Close stdout correctly for "git blame" (#26470) (#26473)
44+
* Check first if minio bucket exists before trying to create it (#26420) (#26465)
45+
* Avoiding accessing undefined tributeValues #26461 (#26462)
46+
* Call git.InitSimple for runRepoSyncReleases (#26396) (#26450)
47+
* Add transaction when creating pull request created dirty data (#26259) (#26437)
48+
* Fix wrong middleware sequence (#26428) (#26436)
49+
* Fix admin queue page title and fix CI failures (#26409) (#26421)
50+
* Introduce ctx.PathParamRaw to avoid incorrect unescaping (#26392) (#26405)
2251
* Bypass MariaDB performance bug of the "IN" sub-query, fix incorrect IssueIndex (#26279) (#26368)
2352
* Fix incorrect CLI exit code and duplicate error message (#26346) (#26347)
2453
* Prevent newline errors with Debian packages (#26332) (#26342)
@@ -31,6 +60,8 @@ been added to each release, please refer to the [blog](https://blog.gitea.com).
3160
* Fix attachment clipboard copy on insecure origin (#26224) (#26231)
3261
* Fix access check for org-level project (#26182) (#26223)
3362
* MISC
63+
* Improve profile readme rendering (#25988) (#26453)
64+
* [docs] Add missing backtick in quickstart.zh-cn.md (#26349) (#26357)
3465
* Upgrade x/net to 0.13.0 (#26301)
3566

3667
## [1.20.2](https://github.com/go-gitea/gitea/releases/tag/v1.20.2) - 2023-07-29

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#Build stage
2-
FROM docker.io/library/golang:1.20-alpine3.18 AS build-env
2+
FROM docker.io/library/golang:1.21-alpine3.18 AS build-env
33

44
ARG GOPROXY
55
ENV GOPROXY ${GOPROXY:-direct}

Dockerfile.rootless

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#Build stage
2-
FROM docker.io/library/golang:1.20-alpine3.18 AS build-env
2+
FROM docker.io/library/golang:1.21-alpine3.18 AS build-env
33

44
ARG GOPROXY
55
ENV GOPROXY ${GOPROXY:-direct}

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@ SHASUM ?= shasum -a 256
2323
HAS_GO := $(shell hash $(GO) > /dev/null 2>&1 && echo yes)
2424
COMMA := ,
2525

26-
XGO_VERSION := go-1.20.x
26+
XGO_VERSION := go-1.21.x
2727

2828
AIR_PACKAGE ?= github.com/cosmtrek/[email protected]
2929
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/[email protected]
3030
GOFUMPT_PACKAGE ?= mvdan.cc/[email protected]
31-
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.53.3
31+
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.54.1
3232
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/[email protected]
3333
MISSPELL_PACKAGE ?= github.com/client9/misspell/cmd/[email protected]
3434
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/[email protected]
3535
XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
3636
GO_LICENSES_PACKAGE ?= github.com/google/[email protected]
37-
GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/[email protected].0
37+
GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/[email protected].1
3838
ACTIONLINT_PACKAGE ?= github.com/rhysd/actionlint/cmd/[email protected]
3939

4040
DOCKER_IMAGE ?= gitea/gitea

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ Translations are done through Crowdin. If you want to translate to a new languag
110110

111111
You can also just create an issue for adding a language or ask on discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty but we hope to fill it as questions pop up.
112112

113-
https://docs.gitea.io/en-us/contributing/translation-guidelines/
113+
https://docs.gitea.com/contributing/localization
114114

115115
[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://crowdin.com/project/gitea)
116116

117117
## Further information
118118

119-
For more information and instructions about how to install Gitea, please look at our [documentation](https://docs.gitea.io/en-us/).
119+
For more information and instructions about how to install Gitea, please look at our [documentation](https://docs.gitea.com/).
120120
If you have questions that are not covered by the documentation, you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://discourse.gitea.io/).
121121

122122
We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea).
@@ -151,7 +151,6 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
151151
<a href="https://opencollective.com/gitea/sponsor/7/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/7/avatar.svg"></a>
152152
<a href="https://opencollective.com/gitea/sponsor/8/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/8/avatar.svg"></a>
153153
<a href="https://opencollective.com/gitea/sponsor/9/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/9/avatar.svg"></a>
154-
<a href="https://cynkra.com/" target="_blank"><img src="https://images.opencollective.com/cynkra/logo/square/64/192.png"></a>
155154

156155
## FAQ
157156

custom/conf/app.example.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
;; Do not copy the whole file as-is, as it contains some invalid sections for illustrative purposes.
55
;; If you don't know what a setting is you should not set it.
66
;;
7-
;; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation.
7+
;; see https://docs.gitea.com/administration/config-cheat-sheet for additional documentation.
88

99

1010
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -454,7 +454,7 @@ INTERNAL_TOKEN=
454454
;REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.0/8,::1/128
455455
;;
456456
;; The minimum password length for new Users
457-
;MIN_PASSWORD_LENGTH = 6
457+
;MIN_PASSWORD_LENGTH = 8
458458
;;
459459
;; Set to true to allow users to import local server paths
460460
;IMPORT_LOCAL_PATHS = false

docker/root/etc/templates/app.ini

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ PATH = /data/gitea/attachments
4646
[log]
4747
MODE = console
4848
LEVEL = info
49-
ROUTER = console
5049
ROOT_PATH = /data/gitea/log
5150

5251
[security]

docs/content/administration/config-cheat-sheet.en-us.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ And the following unique queues:
559559
- `scrypt`: `scrypt$65536$16$2$50`
560560
- Adjusting the algorithm parameters using this functionality is done at your own risk.
561561
- `CSRF_COOKIE_HTTP_ONLY`: **true**: Set false to allow JavaScript to read CSRF cookie.
562-
- `MIN_PASSWORD_LENGTH`: **6**: Minimum password length for new users.
562+
- `MIN_PASSWORD_LENGTH`: **8**: Minimum password length for new users.
563563
- `PASSWORD_COMPLEXITY`: **off**: Comma separated list of character classes required to pass minimum complexity. If left empty or no valid values are specified, checking is disabled (off):
564564
- lower - use one or more lower latin characters
565565
- upper - use one or more upper latin characters

docs/content/administration/customizing-gitea.en-us.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,17 @@ Apart from `extra_links.tmpl` and `extra_tabs.tmpl`, there are other useful temp
126126
- `body_outer_post.tmpl`, before the bottom `<footer>` element.
127127
- `footer.tmpl`, right before the end of the `<body>` tag, a good place for additional JavaScript.
128128

129-
#### Example: PlantUML
129+
### Using Gitea variables
130+
131+
It's possible to use various Gitea variables in your custom templates.
132+
133+
First, _temporarily_ enable development mode: in your `app.ini` change from `RUN_MODE = prod` to `RUN_MODE = dev`. Then add `{{ $ | DumpVar }}` to any of your templates, restart Gitea and refresh that page; that will dump all available variables.
134+
135+
Find the data that you need, and use the corresponding variable; for example, if you need the name of the repository then you'd use `{{.Repository.Name}}`.
136+
137+
If you need to transform that data somehow, and aren't familiar with Go, an easy workaround is to add the data to the DOM and add a small JavaScript script block to manipulate the data.
138+
139+
### Example: PlantUML
130140

131141
You can add [PlantUML](https://plantuml.com/) support to Gitea's markdown by using a PlantUML server.
132142
The data is encoded and sent to the PlantUML server which generates the picture. There is an online
@@ -162,7 +172,7 @@ Alice <-- Bob: Another authentication Response
162172

163173
The script will detect tags with `class="language-plantuml"`, but you can change this by providing a second argument to `parsePlantumlCodeBlocks`.
164174

165-
#### Example: STL Preview
175+
### Example: STL Preview
166176

167177
You can display STL file directly in Gitea by adding:
168178

docs/content/usage/actions/act-runner.en-us.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ docker run --entrypoint="" --rm -it gitea/act_runner:latest act_runner generate-
8181
When you are using the docker image, you can specify the configuration file by using the `CONFIG_FILE` environment variable. Make sure that the file is mounted into the container as a volume:
8282

8383
```bash
84-
docker run -v $(pwd)/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
84+
docker run -v $PWD/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
8585
```
8686

8787
You may notice the commands above are both incomplete, because it is not the time to run the act runner yet.
@@ -157,8 +157,8 @@ If you are using the docker image, behaviour will be slightly different. Registr
157157

158158
```bash
159159
docker run \
160-
-v $(pwd)/config.yaml:/config.yaml \
161-
-v $(pwd)/data:/data \
160+
-v $PWD/config.yaml:/config.yaml \
161+
-v $PWD/data:/data \
162162
-v /var/run/docker.sock:/var/run/docker.sock \
163163
-e CONFIG_FILE=/config.yaml \
164164
-e GITEA_INSTANCE_URL=<instance_url> \
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
date: "2023-08-22T14:21:00+08:00"
3+
title: "Usage: Multi-factor Authentication (MFA)"
4+
slug: "multi-factor-authentication"
5+
weight: 15
6+
toc: false
7+
draft: false
8+
menu:
9+
sidebar:
10+
parent: "usage"
11+
name: "Multi-factor Authentication (MFA)"
12+
weight: 15
13+
identifier: "multi-factor-authentication"
14+
---
15+
16+
# Multi-factor Authentication (MFA)
17+
18+
Multi-factor Authentication (also referred to as MFA or 2FA) enhances security by requiring a time-sensitive set of credentials in addition to a password.
19+
If a password were later to be compromised, logging into Gitea will not be possible without the additional credentials and the account would remain secure.
20+
Gitea supports both TOTP (Time-based One-Time Password) tokens and FIDO-based hardware keys using the Webauthn API.
21+
22+
MFA can be configured within the "Security" tab of the user settings page.
23+
24+
## MFA Considerations
25+
26+
Enabling MFA on a user does affect how the Git HTTP protocol can be used with the Git CLI.
27+
This interface does not support MFA, and trying to use a password normally will no longer be possible whilst MFA is enabled.
28+
If SSH is not an option for Git operations, an access token can be generated within the "Applications" tab of the user settings page.
29+
This access token can be used as if it were a password in order to allow the Git CLI to function over HTTP.
30+
31+
> **Warning** - By its very nature, an access token sidesteps the security benefits of MFA.
32+
> It must be kept secure and should only be used as a last resort.
33+
34+
The Gitea API supports providing the relevant TOTP password in the `X-Gitea-OTP` header, as described in [API Usage](development/api-usage.md).
35+
This should be used instead of an access token where possible.

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ require (
9090
github.com/prometheus/client_golang v1.16.0
9191
github.com/quasoft/websspi v1.1.2
9292
github.com/redis/go-redis/v9 v9.0.5
93+
github.com/robfig/cron/v3 v3.0.1
9394
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1
9495
github.com/sassoftware/go-rpmutils v0.2.0
9596
github.com/sergi/go-diff v1.3.1
@@ -254,7 +255,6 @@ require (
254255
github.com/rhysd/actionlint v1.6.25 // indirect
255256
github.com/rivo/uniseg v0.4.4 // indirect
256257
github.com/robfig/cron v1.2.0 // indirect
257-
github.com/robfig/cron/v3 v3.0.1 // indirect
258258
github.com/rogpeppe/go-internal v1.11.0 // indirect
259259
github.com/rs/xid v1.5.0 // indirect
260260
github.com/russross/blackfriday/v2 v2.1.0 // indirect

models/actions/run.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type ActionRun struct {
4343
EventPayload string `xorm:"LONGTEXT"`
4444
TriggerEvent string // the trigger event defined in the `on` configuration of the triggered workflow
4545
Status Status `xorm:"index"`
46+
Version int `xorm:"version default 0"` // Status could be updated concomitantly, so an optimistic lock is needed
4647
Started timeutil.TimeStamp
4748
Stopped timeutil.TimeStamp
4849
Created timeutil.TimeStamp `xorm:"created"`
@@ -332,12 +333,22 @@ func GetRunByIndex(ctx context.Context, repoID, index int64) (*ActionRun, error)
332333
return run, nil
333334
}
334335

336+
// UpdateRun updates a run.
337+
// It requires the inputted run has Version set.
338+
// It will return error if the version is not matched (it means the run has been changed after loaded).
335339
func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error {
336340
sess := db.GetEngine(ctx).ID(run.ID)
337341
if len(cols) > 0 {
338342
sess.Cols(cols...)
339343
}
340-
_, err := sess.Update(run)
344+
affected, err := sess.Update(run)
345+
if err != nil {
346+
return err
347+
}
348+
if affected == 0 {
349+
return fmt.Errorf("run has changed")
350+
// It's impossible that the run is not found, since Gitea never deletes runs.
351+
}
341352

342353
if run.Status != 0 || util.SliceContains(cols, "status") {
343354
if run.RepoID == 0 {
@@ -358,7 +369,7 @@ func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error {
358369
}
359370
}
360371

361-
return err
372+
return nil
362373
}
363374

364375
type ActionRunIndex db.ResourceIndex

models/actions/run_job.go

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,32 +114,41 @@ func UpdateRunJob(ctx context.Context, job *ActionRunJob, cond builder.Cond, col
114114
if affected != 0 && util.SliceContains(cols, "status") && job.Status.IsWaiting() {
115115
// if the status of job changes to waiting again, increase tasks version.
116116
if err := IncreaseTaskVersion(ctx, job.OwnerID, job.RepoID); err != nil {
117-
return affected, err
117+
return 0, err
118118
}
119119
}
120120

121121
if job.RunID == 0 {
122122
var err error
123123
if job, err = GetRunJobByID(ctx, job.ID); err != nil {
124-
return affected, err
124+
return 0, err
125125
}
126126
}
127127

128-
jobs, err := GetRunJobsByRunID(ctx, job.RunID)
129-
if err != nil {
130-
return affected, err
128+
{
129+
// Other goroutines may aggregate the status of the run and update it too.
130+
// So we need load the run and its jobs before updating the run.
131+
run, err := GetRunByID(ctx, job.RunID)
132+
if err != nil {
133+
return 0, err
134+
}
135+
jobs, err := GetRunJobsByRunID(ctx, job.RunID)
136+
if err != nil {
137+
return 0, err
138+
}
139+
run.Status = aggregateJobStatus(jobs)
140+
if run.Started.IsZero() && run.Status.IsRunning() {
141+
run.Started = timeutil.TimeStampNow()
142+
}
143+
if run.Stopped.IsZero() && run.Status.IsDone() {
144+
run.Stopped = timeutil.TimeStampNow()
145+
}
146+
if err := UpdateRun(ctx, run, "status", "started", "stopped"); err != nil {
147+
return 0, fmt.Errorf("update run %d: %w", run.ID, err)
148+
}
131149
}
132150

133-
runStatus := aggregateJobStatus(jobs)
134-
135-
run := &ActionRun{
136-
ID: job.RunID,
137-
Status: runStatus,
138-
}
139-
if runStatus.IsDone() {
140-
run.Stopped = timeutil.TimeStampNow()
141-
}
142-
return affected, UpdateRun(ctx, run)
151+
return affected, nil
143152
}
144153

145154
func aggregateJobStatus(jobs []*ActionRunJob) Status {

0 commit comments

Comments
 (0)