Skip to content

Commit 2870bc0

Browse files
authored
Merge branch 'main' into httpsign
2 parents b8d43cd + df9612b commit 2870bc0

Some content is hidden

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

66 files changed

+728
-4649
lines changed

Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,6 @@ fomantic:
703703
cd $(FOMANTIC_WORK_DIR) && npm install --no-save
704704
cp -f $(FOMANTIC_WORK_DIR)/theme.config.less $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/theme.config
705705
cp -rf $(FOMANTIC_WORK_DIR)/_site $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/
706-
cp -f web_src/js/vendor/dropdown.js $(FOMANTIC_WORK_DIR)/node_modules/fomantic-ui/src/definitions/modules
707706
cd $(FOMANTIC_WORK_DIR) && npx gulp -f node_modules/fomantic-ui/gulpfile.js build
708707
rm -f $(FOMANTIC_WORK_DIR)/build/*.min.*
709708

cmd/serv.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"code.gitea.io/gitea/modules/log"
2525
"code.gitea.io/gitea/modules/pprof"
2626
"code.gitea.io/gitea/modules/private"
27+
"code.gitea.io/gitea/modules/process"
2728
repo_module "code.gitea.io/gitea/modules/repository"
2829
"code.gitea.io/gitea/modules/setting"
2930
"code.gitea.io/gitea/services/lfs"
@@ -302,10 +303,11 @@ func runServ(c *cli.Context) error {
302303
if _, err := os.Stat(setting.RepoRootPath); err != nil {
303304
if os.IsNotExist(err) {
304305
return fail("Incorrect configuration.",
305-
"Directory `[repository]` `ROOT` was not found, please check if $GITEA_WORK_DIR is passed to the SSH connection or make `[repository]` `ROOT` an absolute value.")
306+
"Directory `[repository]` `ROOT` %s was not found, please check if $GITEA_WORK_DIR is passed to the SSH connection or make `[repository]` `ROOT` an absolute value.", setting.RepoRootPath)
306307
}
307308
}
308309

310+
process.SetSysProcAttribute(gitcmd)
309311
gitcmd.Dir = setting.RepoRootPath
310312
gitcmd.Stdout = os.Stdout
311313
gitcmd.Stdin = os.Stdin

custom/conf/app.example.ini

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,8 @@ PATH =
813813
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
814814
;[repository]
815815
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
816-
;; Root path for storing all repository data. It must be an absolute path. By default, it is stored in a sub-directory of `APP_DATA_PATH`.
816+
;; Root path for storing all repository data. By default, it is set to %(APP_DATA_PATH)/gitea-repositories.
817+
;; A relative path is interpreted as %(GITEA_WORK_DIR)/%(ROOT)
817818
;ROOT =
818819
;;
819820
;; The script type this server supports. Usually this is `bash`, but some users report that only `sh` is available.
@@ -947,6 +948,9 @@ PATH =
947948
;; List of keywords used in Pull Request comments to automatically reopen a related issue
948949
;REOPEN_KEYWORDS = reopen,reopens,reopened
949950
;;
951+
;; Set default merge style for repository creating, valid options: merge, rebase, rebase-merge, squash
952+
;DEFAULT_MERGE_STYLE = merge
953+
;;
950954
;; In the default merge message for squash commits include at most this many commits
951955
;DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT = 50
952956
;;
@@ -2087,7 +2091,7 @@ PATH =
20872091
;[mirror]
20882092
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20892093
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2090-
;; Enables the mirror functionality. Set to **false** to disable all mirrors.
2094+
;; Enables the mirror functionality. Set to **false** to disable all mirrors. Pre-existing mirrors remain valid but won't be updated; may be converted to regular repo.
20912095
;ENABLED = true
20922096
;; Disable the creation of **new** pull mirrors. Pre-existing mirrors remain valid. Will be ignored if `mirror.ENABLED` is `false`.
20932097
;DISABLE_NEW_PULL = false

docker/root/etc/s6/openssh/setup

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ if [ -d /etc/ssh ]; then
4949
SSH_DSA_CERT="${SSH_DSA_CERT:+"HostCertificate "}${SSH_DSA_CERT}" \
5050
SSH_MAX_STARTUPS="${SSH_MAX_STARTUPS:+"MaxStartups "}${SSH_MAX_STARTUPS}" \
5151
SSH_MAX_SESSIONS="${SSH_MAX_SESSIONS:+"MaxSessions "}${SSH_MAX_SESSIONS}" \
52+
SSH_INCLUDE_FILE="${SSH_INCLUDE_FILE:+"Include "}${SSH_INCLUDE_FILE}" \
5253
SSH_LOG_LEVEL=${SSH_LOG_LEVEL:-"INFO"} \
5354
envsubst < /etc/templates/sshd_config > /etc/ssh/sshd_config
5455

docker/root/etc/templates/sshd_config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,5 @@ Banner none
4141
Subsystem sftp /usr/lib/ssh/sftp-server
4242

4343
AcceptEnv GIT_PROTOCOL
44+
45+
${SSH_INCLUDE_FILE}

docs/content/doc/advanced/config-cheat-sheet.en-us.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
4242

4343
## Repository (`repository`)
4444

45-
- `ROOT`: **data/gitea-repositories/**: Root path for storing all repository data. It must be
46-
an absolute path. By default it is stored in a sub-directory of `APP_DATA_PATH`.
45+
- `ROOT`: **%(APP_DATA_PATH)/gitea-repositories**: Root path for storing all repository data.
46+
A relative path is interpreted as **%(GITEA_WORK_DIR)/%(ROOT)**.
4747
- `SCRIPT_TYPE`: **bash**: The script type this server supports. Usually this is `bash`,
4848
but some users report that only `sh` is available.
4949
- `DETECTED_CHARSETS_ORDER`: **UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr**: Tie-break order of detected charsets - if the detected charsets have equal confidence, charsets earlier in the list will be chosen in preference to those later. Adding `defaults` will place the unnamed charsets at that point.
@@ -92,6 +92,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
9292
keywords used in Pull Request comments to automatically close a related issue
9393
- `REOPEN_KEYWORDS`: **reopen**, **reopens**, **reopened**: List of keywords used in Pull Request comments to automatically reopen
9494
a related issue
95+
- `DEFAULT_MERGE_STYLE`: **merge**: Set default merge style for repository creating, valid options: `merge`, `rebase`, `rebase-merge`, `squash`
9596
- `DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT`: **50**: In the default merge message for squash commits include at most this many commits. Set to `-1` to include all commits
9697
- `DEFAULT_MERGE_MESSAGE_SIZE`: **5120**: In the default merge message for squash commits limit the size of the commit messages. Set to `-1` to have no limit. Only used if `POPULATE_SQUASH_COMMENT_WITH_COMMIT_MESSAGES` is `true`.
9798
- `DEFAULT_MERGE_MESSAGE_ALL_AUTHORS`: **false**: In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list
@@ -1094,7 +1095,7 @@ Task queue configuration has been moved to `queue.task`. However, the below conf
10941095

10951096
## Mirror (`mirror`)
10961097

1097-
- `ENABLED`: **true**: Enables the mirror functionality. Set to **false** to disable all mirrors.
1098+
- `ENABLED`: **true**: Enables the mirror functionality. Set to **false** to disable all mirrors. Pre-existing mirrors remain valid but won't be updated; may be converted to regular repo.
10981099
- `DISABLE_NEW_PULL`: **false**: Disable the creation of **new** pull mirrors. Pre-existing mirrors remain valid. Will be ignored if `mirror.ENABLED` is `false`.
10991100
- `DISABLE_NEW_PUSH`: **false**: Disable the creation of **new** push mirrors. Pre-existing mirrors remain valid. Will be ignored if `mirror.ENABLED` is `false`.
11001101
- `DEFAULT_INTERVAL`: **8h**: Default interval between each check

docs/content/doc/developers/guidelines-frontend.md

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Discouraged implementations:
6464
Only mark a function as `async` if and only if there are `await` calls
6565
or `Promise` returns inside the function.
6666

67-
It's not recommended to use `async` event listeners, which may lead to problems.
67+
It's not recommended to use `async` event listeners, which may lead to problems.
6868
The reason is that the code after await is executed outside the event dispatch.
6969
Reference: https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
7070

@@ -73,50 +73,6 @@ it's recommended to use `const _promise = asyncFoo()` to tell readers
7373
that this is done by purpose, we want to call the async function and ignore the Promise.
7474
Some lint rules and IDEs also have warnings if the returned Promise is not handled.
7575

76-
#### DOM Event Listener
77-
78-
```js
79-
el.addEventListener('click', (e) => {
80-
(async () => {
81-
await asyncFoo(); // recommended
82-
// then we shound't do e.preventDefault() after await, no effect
83-
})();
84-
85-
const _promise = asyncFoo(); // recommended
86-
87-
e.preventDefault(); // correct
88-
});
89-
90-
el.addEventListener('async', async (e) => { // not recommended but acceptable
91-
e.preventDefault(); // acceptable
92-
await asyncFoo(); // skip out event dispatch
93-
e.preventDefault(); // WRONG
94-
});
95-
```
96-
97-
#### jQuery Event Listener
98-
99-
```js
100-
$('#el').on('click', (e) => {
101-
(async () => {
102-
await asyncFoo(); // recommended
103-
// then we shound't do e.preventDefault() after await, no effect
104-
})();
105-
106-
const _promise = asyncFoo(); // recommended
107-
108-
e.preventDefault(); // correct
109-
return false; // correct
110-
});
111-
112-
$('#el').on('click', async (e) => { // not recommended but acceptable
113-
e.preventDefault(); // acceptable
114-
return false; // WRONG, jQuery expects the returned value is a boolean, not a Promise
115-
await asyncFoo(); // skip out event dispatch
116-
return false; // WRONG
117-
});
118-
```
119-
12076
### HTML Attributes and `dataset`
12177

12278
We forbid `dataset` usage, its camel-casing behaviour makes it hard to grep for attributes. However there are still some special cases, so the current guideline is:

docs/content/doc/help/faq.en-us.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ https://github.com/loganinak/MigrateGitlabToGogs
6464
- Unix: Environment variable `HOME`
6565
- Windows: Environment variable `USERPROFILE`, else environment variables `HOMEDRIVE`+`HOMEPATH`
6666
- RepoRootPath
67-
- `ROOT` in `app.ini`
68-
- Else `%(AppDataPath)/gitea-repositories`
67+
- `ROOT` in the \[repository] section of `app.ini` if absolute
68+
- Else `%(AppWorkPath)/ROOT` if `ROOT` in the \[repository] section of `app.ini` if relative
69+
- Default `%(AppDataPath)/gitea-repositories`
6970
- INI (config file)
7071
- `-c` flag
7172
- Else `%(CustomPath)/conf/app.ini`

docs/content/doc/usage/backup-and-restore.en-us.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ file can be unpacked and used to restore an instance.
2222

2323
{{< toc >}}
2424

25+
## Backup Consistency
26+
27+
To ensure the consistency of the Gitea instance, it must be shutdown during backup.
28+
29+
Gitea consists of a database, files and git repositories, all of which change when it is used. For instance, when a migration is in progress, a transaction is created in the database while the git repository is being copied over. If the backup happens in the middle of the migration, the git repository may be incomplete although the database claims otherwise because it was dumped afterwards. The only way to avoid such race conditions is by stopping the Gitea instance during the backups.
30+
2531
## Backup Command (`dump`)
2632

2733
Switch to the user running Gitea: `su git`. Run `./gitea dump -c /path/to/app.ini` in the Gitea installation
@@ -48,6 +54,17 @@ Inside the `gitea-dump-1482906742.zip` file, will be the following:
4854
Intermediate backup files are created in a temporary directory specified either with the
4955
`--tempdir` command-line parameter or the `TMPDIR` environment variable.
5056

57+
## Backup the database
58+
59+
The SQL dump created by `gitea dump` uses XORM and Gitea admins may prefer to use the native the MySQL and PostgreSQL dump tools instead. There are still open issues when using XORM for dumping the database that may cause problems when attempting to restore it.
60+
61+
```sh
62+
# mysql
63+
mysqldump -u$USER -p$PASS --database $DATABASE > gitea-db.sql
64+
# postgres
65+
pgdump -U $USER $DATABASE > gitea-db.sql
66+
```
67+
5168
### Using Docker (`dump`)
5269

5370
There are a few caveats for using the `dump` command with Docker.

docs/content/page/index.de-de.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Gitea ist ein [Gogs](http://gogs.io)-Fork.
2626
- 2 CPU Kerne und 1GB RAM sind für kleine Teams/Projekte ausreichend.
2727
- Gitea sollte unter einem seperaten nicht-root Account auf UNIX-Systemen ausgeführt werden.
2828
- Achtung: Gitea verwaltet die `~/.ssh/authorized_keys` Datei. Gitea unter einem normalen Benutzer auszuführen könnte dazu führen, dass dieser sich nicht mehr anmelden kann.
29-
- [Git](https://git-scm.com/) Version 1.7.2 oder später wird benötigt. Version 1.9.0 oder später wird empfohlen. Außerdem zu beachten:
29+
- [Git](https://git-scm.com/) Version 2.0 oder später wird benötigt.
3030
- Wenn git >= 2.1.2. und [Git large file storage](https://git-lfs.github.com/) aktiviert ist, dann wird es auch in Gitea verwendbar sein.
3131
- Wenn git >= 2.18, dann wird das Rendern von Commit-Graphen automatisch aktiviert.
3232

docs/content/page/index.en-us.md

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -249,14 +249,25 @@ Windows, on architectures like amd64, i386, ARM, PowerPC, and others.
249249
- Webhooks
250250
- Git Hooks
251251
- Deploy keys
252+
- Package Registries
253+
- Composer
254+
- Conan
255+
- Container
256+
- Generic
257+
- Helm
258+
- Maven
259+
- NPM
260+
- Nuget
261+
- PyPI
262+
- RubyGems
252263

253264
## System Requirements
254265

255266
- A Raspberry Pi 3 is powerful enough to run Gitea for small workloads.
256267
- 2 CPU cores and 1GB RAM is typically sufficient for small teams/projects.
257268
- Gitea should be run with a dedicated non-root system account on UNIX-type systems.
258269
- Note: Gitea manages the `~/.ssh/authorized_keys` file. Running Gitea as a regular user could break that user's ability to log in.
259-
- [Git](https://git-scm.com/) version 1.7.2 or later is required. Version 1.9.0 or later is recommended. Also please note:
270+
- [Git](https://git-scm.com/) version 2.0.0 or later is required.
260271
- [Git Large File Storage](https://git-lfs.github.com/) will be available if enabled when Git >= 2.1.2.
261272
- Git commit-graph rendering will be enabled automatically when Git >= 2.18.
262273

@@ -267,22 +278,21 @@ Windows, on architectures like amd64, i386, ARM, PowerPC, and others.
267278

268279
## Components
269280

270-
* Web framework: [Chi](http://github.com/go-chi/chi)
281+
* Web server framework: [Chi](http://github.com/go-chi/chi)
271282
* ORM: [XORM](https://xorm.io)
272-
* UI components:
273-
* [Semantic UI](http://semantic-ui.com/)
274-
* [GitHub Octicons](https://octicons.github.com/)
275-
* [Font Awesome](http://fontawesome.io/)
276-
* [DropzoneJS](http://www.dropzonejs.com/)
277-
* [Highlight](https://highlightjs.org/)
278-
* [Clipboard](https://zenorocha.github.io/clipboard.js/)
279-
* [CodeMirror](https://codemirror.net/)
280-
* [jQuery MiniColors](https://github.com/claviska/jquery-minicolors)
283+
* UI frameworks:
284+
* [jQuery](https://jquery.com)
285+
* [Fomantic UI](https://fomantic-ui.com)
286+
* [Vue2](https://vuejs.org)
287+
* and various components (see package.json)
288+
* Editors:
289+
* [CodeMirror](https://codemirror.net)
290+
* [EasyMDE](https://github.com/Ionaru/easy-markdown-editor)
291+
* [Monaco Editor](https://microsoft.github.io/monaco-editor)
281292
* Database drivers:
282293
* [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
283294
* [github.com/lib/pq](https://github.com/lib/pq)
284295
* [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
285-
* [github.com/pingcap/tidb](https://github.com/pingcap/tidb)
286296
* [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
287297

288298
## Software and Service Support

docs/content/page/index.fr-fr.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,27 +249,24 @@ Le but de ce projet est de fournir de la manière la plus simple, la plus rapide
249249

250250
## Navigateurs supportés
251251

252-
- Consultez [Semantic UI](https://github.com/Semantic-Org/Semantic-UI#browser-support) pour la liste des navigateurs supportés.
253-
- La taille minimale supportée officielement est de **1024*768**, l'interface utilisateur peut toujours fonctionner à une taille plus petite, mais ce n'est pas garanti et les problèmes remontés ne seront pas corrigés.
252+
- Chrome, Firefox, Safari, Edge
254253

255254
## Composants
256255

257256
* Framework web : [Chi](http://github.com/go-chi/chi)
258257
* ORM: [XORM](https://xorm.io)
259258
* Interface graphique :
260-
* [Semantic UI](http://semantic-ui.com/)
261-
* [GitHub Octicons](https://octicons.github.com/)
262-
* [Font Awesome](http://fontawesome.io/)
263-
* [DropzoneJS](http://www.dropzonejs.com/)
264-
* [Highlight](https://highlightjs.org/)
265-
* [Clipboard](https://zenorocha.github.io/clipboard.js/)
266-
* [CodeMirror](https://codemirror.net/)
267-
* [jQuery MiniColors](https://github.com/claviska/jquery-minicolors)
259+
* [jQuery](https://jquery.com)
260+
* [Fomantic UI](https://fomantic-ui.com)
261+
* [Vue2](https://vuejs.org)
262+
* [CodeMirror](https://codemirror.net)
263+
* [EasyMDE](https://github.com/Ionaru/easy-markdown-editor)
264+
* [Monaco Editor](https://microsoft.github.io/monaco-editor)
265+
* ... (package.json)
268266
* Connecteurs de base de données :
269267
* [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
270268
* [github.com/lib/pq](https://github.com/lib/pq)
271269
* [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
272-
* [github.com/pingcap/tidb](https://github.com/pingcap/tidb)
273270
* [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
274271

275272
## Logiciels et services

docs/content/page/index.zh-cn.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Gitea的首要目标是创建一个极易安装,运行非常快速,安装和
3434
- 支持后台管理面板
3535
- 支持 MySQL、PostgreSQL、SQLite3、MSSQL 和 TiDB(MySQL) 数据库
3636
- 支持多语言本地化(21 种语言)
37+
- 支持软件包注册中心(Composer/Conan/Container/Generic/Helm/Maven/NPM/Nuget/PyPI/RubyGems)
3738

3839
## 系统要求
3940

@@ -42,27 +43,25 @@ Gitea的首要目标是创建一个极易安装,运行非常快速,安装和
4243

4344
## 浏览器支持
4445

45-
- 请根据 [Semantic UI](https://github.com/Semantic-Org/Semantic-UI#browser-support) 查看具体支持的浏览器版本。
46-
- 官方支持的最小 UI 尺寸为 **1024*768**,UI 不一定会在更小尺寸的设备上被破坏,但我们无法保证且不会修复。
46+
- Chrome, Firefox, Safari, Edge
4747

4848
## 组件
4949

5050
* Web框架: [Chi](http://github.com/go-chi/chi)
5151
* ORM: [XORM](https://xorm.io)
52-
* UI组件
53-
* [Semantic UI](http://semantic-ui.com/)
54-
* [GitHub Octicons](https://octicons.github.com/)
55-
* [Font Awesome](http://fontawesome.io/)
56-
* [DropzoneJS](http://www.dropzonejs.com/)
57-
* [Highlight](https://highlightjs.org/)
58-
* [Clipboard](https://zenorocha.github.io/clipboard.js/)
59-
* [CodeMirror](https://codemirror.net/)
60-
* [jQuery MiniColors](https://github.com/claviska/jquery-minicolors)
52+
* UI 框架
53+
* [jQuery](https://jquery.com)
54+
* [Fomantic UI](https://fomantic-ui.com)
55+
* [Vue2](https://vuejs.org)
56+
* 更多组件参见 package.json
57+
* 编辑器:
58+
* [CodeMirror](https://codemirror.net)
59+
* [EasyMDE](https://github.com/Ionaru/easy-markdown-editor)
60+
* [Monaco Editor](https://microsoft.github.io/monaco-editor)
6161
* 数据库驱动:
6262
* [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
6363
* [github.com/lib/pq](https://github.com/lib/pq)
6464
* [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
65-
* [github.com/pingcap/tidb](https://github.com/pingcap/tidb)
6665
* [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
6766

6867
## 软件及服务支持

0 commit comments

Comments
 (0)