Update zh tw languages and fix some broken links

This commit is contained in:
Lunny Xiao
2026-07-01 14:47:51 -07:00
parent 9558006c39
commit a084bdb556
842 changed files with 31137 additions and 31065 deletions

View File

@@ -8,34 +8,36 @@ aliases:
# API 使用指南
## 开启/配置 API 访问
## 開啟/設定 API 存取
通常情下, `ENABLE_SWAGGER` 默认开启并且参数 `MAX_RESPONSE_ITEMS` 默认为 50。您可以 [Config Cheat Sheet](../administration/config-cheat-sheet.md) 中取更多配置相关信息
通常情下, `ENABLE_SWAGGER` 預設開啟並且參數 `MAX_RESPONSE_ITEMS` 預設爲 50。您可以 [Config Cheat Sheet](../administration/config-cheat-sheet.md) 中取更多設定相關資訊
## 通过 API 认证
<a id="authentication"></a>
<a id="通過-api-認證"></a>
## 透過 API 認證
Gitea 支以下几种 API 认证方式:
Gitea 支以下幾種 API 認證方式:
- HTTP basic authentication 方式
- 通过指定 `token=...` URL 查询参数方式
- 通过指定 `access_token=...` URL 查询参数方式
- 通过指定 `Authorization: token ...` HTTP header 方式
- 透過指定 `token=...` URL 查詢參數方式
- 透過指定 `access_token=...` URL 查詢參數方式
- 透過指定 `Authorization: token ...` HTTP header 方式
以上提及的认证方法接受相同的 apiKey token 型,您可以在编码时通过查阅代码更好地理解这一点
Gitea 用解析查询参数以及头部信息来获取 token 的代码可以在 [modules/auth/auth.go](https://github.com/go-gitea/gitea/blob/6efdcaed86565c91a3dc77631372a9cc45a58e89/modules/auth/auth.go#L47) 中找到。
以上提及的認證方法接受相同的 apiKey token 型,您可以在編碼時透過查閱程式碼更好地理解這一點
Gitea 調用解析查詢參數以及頭部資訊來獲取 token 的程式碼可以在 [modules/auth/auth.go](https://github.com/go-gitea/gitea/blob/6efdcaed86565c91a3dc77631372a9cc45a58e89/modules/auth/auth.go#L47) 中找到。
您可以通过您的 gitea web 界面来创建 apiKey token
您可以透過您的 gitea Web 介面來建立 apiKey token
`Settings | Applications | Generate New Token`.
### 关于 `Authorization:` header
### 關於 `Authorization:` header
一些史原因Gitea 需要在 header 的 apiKey token 引入前 `token`类似于如下形式:
一些史原因Gitea 需要在 header 的 apiKey token 引入前 `token`類似於如下形式:
```
Authorization: token 65eaa9c8ef52460d22a93307fe0aee76289dc675
```
`curl` 命令例,它以如下形式携带在请求中:
`curl` 命令例,它以如下形式攜帶在請求中:
```
curl "http://localhost:4000/api/v1/repos/test1/test1/issues" \
@@ -44,20 +46,20 @@ curl "http://localhost:4000/api/v1/repos/test1/test1/issues" \
-H "Content-Type: application/json" -d "{ \"body\": \"testing\", \"title\": \"test 20\"}" -i
```
正如上例所示,您也可以在 GET 求中使用同一 token `token=` 的查询参数形式携带 token 来进行认证
正如上例所示,您也可以在 GET 求中使用同一 token `token=` 的查詢參數形式攜帶 token 來進行認證
## 通过 API 列出您发布的令牌
## 透過 API 列出您發佈的令牌
`/users/:name/tokens` 是一特殊的接口,需要您使用 basic authentication 进行认证,具原因在 issue 中
`/users/:name/tokens` 是一特殊的介面,需要您使用 basic authentication 進行認證,具原因在 issue 中
[#3842](https://github.com/go-gitea/gitea/issues/3842#issuecomment-397743346) 有所提及,使用方法如下所示:
### 使用 Basic authentication 认证
### 使用 Basic authentication 認證
```
$ curl --url https://yourusername:yourpassword@gitea.your.host/api/v1/users/yourusername/tokens
[{"name":"test","sha1":"..."},{"name":"dev","sha1":"..."}]
```
## 使用 Sudo 方式求 API
## 使用 Sudo 方式求 API
此 API 允管理借用其他用户身份行 API 求。只需在求中指定查询参数 `sudo=` 或是指定 header 中的 `Sudo:` 需要使用的用户 username 即可。
此 API 允管理借用其他使用者身份行 API 求。只需在求中指定查詢參數 `sudo=` 或是指定 header 中的 `Sudo:` 需要使用的使用者 username 即可。

View File

@@ -6,38 +6,38 @@ aliases:
- /zh-tw/hacking-on-gitea
---
# 玩 Gitea
# 玩 Gitea
## 快速入
## 快速入
得快速工作的开发环境,您可以使用 Gitpod。
得快速工作的開發環境,您可以使用 Gitpod。
[![在 Gitpod 中打](/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/go-gitea/gitea)
[![在 Gitpod 中打](/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/go-gitea/gitea)
## 安 Golang
## 安 Golang
您需要 [ go](https://go.dev/doc/install) 并设置您的 go 境。
您需要 [ go](https://go.dev/doc/install) 並設定您的 go 境。
接下[使用 npm 安 Node.js](https://nodejs.org/en/download/) 这是构
JavaScript 和 CSS 文件的必要工具。最低支的 Node.js 版本是 @minNodeVersion@
且推使用最新的 LTS 版本。
接下[使用 npm 安 Node.js](https://nodejs.org/en/download/) 這是構
JavaScript 和 CSS 文件的必要工具。最低支的 Node.js 版本是 @minNodeVersion@
且推使用最新的 LTS 版本。
**注意** 当执行需要外部工具的 make 任务时,比如
`make watch-backend`Gitea 会自动下载并构建这些必要的件。了能使用些,你必
`"$GOPATH"/bin`加入到可行路上。如果你不把 go bin 目添加到可行路你必须手动
指定可行程序路径
**注意** 當執行需要外部工具的 make 任務時,比如
`make watch-backend`Gitea 會自動下載並構建這些必要的件。了能使用些,你必
`"$GOPATH"/bin`加入到可行路上。如果你不把 go bin 目添加到可行路你必須手動
指定可行程式路徑
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源代码。然而,`gofmt`果可能因 `go` 的版本而有差。因此推荐安装我们持续集成使用
的 Go 版本。截至上次更新Go 版本应该@goVersion@。
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源程式碼。然而,`gofmt`果可能因 `go` 的版本而有差。因此推薦安裝我們持續整合使用
的 Go 版本。截至上次更新Go 版本應該@goVersion@。
## 安 Make
## 安 Make
Gitea 大量使用 `Make` 来自动化任和改进开发。本指南涵了如何安 Make。
Gitea 大量使用 `Make` 來自動化任和改進開發。本指南涵了如何安 Make。
### 在 Linux 上
使用管理器安
使用套件管理器安
在 Ubuntu/Debian 上:
@@ -53,37 +53,37 @@ sudo yum install make
### 在 Windows 上
Make 的这三个发行版都可以在 Windows 上行:
Make 的這三個發行版都可以在 Windows 上行:
- [单个二进制构](http://www.equation.com/servlet/equation.cmd?fa=make)。复制到某处并添加到 `PATH`
- [單個二進制構](http://www.equation.com/servlet/equation.cmd?fa=make)。複製到某處並添加到 `PATH`
- [32 位版本](http://www.equation.com/ftpdir/make/32/make.exe)
- [64 位版本](http://www.equation.com/ftpdir/make/64/make.exe)
- [MinGW-w64](https://www.mingw-w64.org) / [MSYS2](https://www.msys2.org/)。
- MSYS2 是一工具和的集合,您提供一个易于使用的环境来构建、安装和运行本 Windows 件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件称为 `mingw32-make.exe` 而不是 `make.exe` `bin` 文件添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`请参阅 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3编译 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 标头缺少一些 Windows -只有 CRT 函像 \_beginthread 一
- [Chocolatey 管理器](https://chocolatey.org/packages/make)。`choco install make`
- MSYS2 是一工具和的集合,您提供一個易於使用的環境來構建、安裝和運行本 Windows 件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件稱爲 `mingw32-make.exe` 而不是 `make.exe` `bin` 文件添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`請參閱 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3編譯 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 標頭缺少一些 Windows -只有 CRT 函像 \_beginthread 一
- [Chocolatey 套件管理器](https://chocolatey.org/packages/make)。`choco install make`
**注意** :如果您尝试在 Windows 命令提示符下使用 make 进行构建,您可能遇到问题。建使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
**注意** :如果您嘗試在 Windows 命令提示符下使用 make 進行構建,您可能遇到問題。建使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
## 下载并克隆 Gitea 源代码
## 下載並克隆 Gitea 源程式碼
取源代码的推方法是使用 `git clone`
取源程式碼的推方法是使用 `git clone`
```bash
git clone https://github.com/go-gitea/gitea
```
(自 go modules 出现后,不再需要建 go 项目从 `$GOPATH`取,因此不再推使用 `go get` 方法。)
(自 go modules 出現後,不再需要建 go 專案從 `$GOPATH`取,因此不再推使用 `go get` 方法。)
## 派生 Gitea
如上所述下主要的 Gitea 源代码。然,派生 [Gitea 仓库](https://github.com/go-gitea/gitea)
并为您的本地仓库切换 git 程源,或添加另一个远程源:
如上所述下主要的 Gitea 源程式碼。然,派生 [Gitea 儲存庫](https://github.com/go-gitea/gitea)
併爲您的本地儲存庫切換 git 程源,或添加另一個遠程源:
```bash
# 将原来的 Gitea origin 重命名 upstream
# 將原來的 Gitea origin 重命名 upstream
git remote rename origin upstream
git remote add origin "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
@@ -92,86 +92,86 @@ git fetch --all --prune
或者:
```bash
# 为我们的 fork 添加新的
# 爲我們的 fork 添加新的
git remote add "$FORK_NAME" "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
```
了能够创建合并请求,应将分叉存储库添加 Gitea 本地仓库的远程,否则无法推送更改。
了能夠建立合併請求,應將分叉儲存庫添加 Gitea 本地儲存庫的遠程,否則無法推送更改。
## 建 Gitea基本
## 建 Gitea基本
看看我
[](installation/from-source.md)
关于如何[从源代码构](installation/from-source.md) 。
看看我
[](installation/from-source.md)
關於如何[從源程式碼構](installation/from-source.md) 。
从源代码构建的最简单推荐方法是:
從源程式碼構建的最簡單推薦方法是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build`标将同时执`frontend``backend` 子目。如果存在 `bindata` 标签,资源文件将被编译成二制文件。建议在进行前端开发时省略 `bindata` 标签,以便实时反映更改。
`build`標將同時執`frontend``backend` 子目。如果存在 `bindata` 標籤,資源文件將被編譯成二制文件。建議在進行前端開發時省略 `bindata` 標籤,以便實時反映更改。
所有可用的 `make`标,请参阅 `make help`。另请参阅 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以解我的持续集成是如何工作的。
所有可用的 `make`標,請參閱 `make help`。另請參閱 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以解我的持續整合是如何工作的。
## 持续构
## 持續構
要在源文件更改时运行并持续构建:
要在源文件更改時運行並持續構建:
```bash
# 对于前端和
# 對於前端和
make watch
# 或者只看前端文件html/js/css
make watch-frontend
# 或者:只看端文件 (go)
# 或者:只看端文件 (go)
make watch-backend
```
在 macOS 上,监视所有端源文件可能会达到默认的打文件限制,可以通过当前 shell 的 `ulimit -n 12288` 或所有未 shell 的 shell 启动文件增加。
在 macOS 上,監視所有端源文件可能會達到預設的打文件限制,可以透過當前 shell 的 `ulimit -n 12288` 或所有未 shell 的 shell 啟動文件增加。
### 格式化、代码分析和拼写检
### 格式化、程式碼分析和拼寫檢
的持续集成将拒绝未通过代码检查(包括格式查、代码分析和拼写检查)的 PR。
的持續整合將拒絕未通過程式碼檢查(包括格式查、程式碼分析和拼寫檢查)的 PR。
应该格式化你的代码
應該格式化你的程式碼
```bash
make fmt
```
并检查源代码
並檢查源程式碼
```bash
# lint 前端和端代
# lint 前端和端代
make lint
# lint 端代
# lint 端代
make lint-backend
```
**注意** `gofmt`果取决于 `go` 的版本。您应该运行与持续集成相同的 go 版本。
**注意** `gofmt`果取決於 `go` 的版本。您應該運行與持續整合相同的 go 版本。
### 理 JS 和 CSS
### 理 JS 和 CSS
前端开发应遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
前端開發應遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
要使用前端资源构建,使用上面提到的“watch-frontend”目或只建一次:
要使用前端資源構建,使用上面提到的“watch-frontend”目或只建一次:
```bash
make build && ./gitea
```
在提交之前,保 linters 通
在提交之前,保 linters 通
```bash
make lint-frontend
```
### 配置本地 ElasticSearch
### 設定本地 ElasticSearch
使用 docker 启动本地 ElasticSearch 例:
使用 docker 啟動本地 ElasticSearch 例:
```sh
mkdir -p $(pwd) /data/elasticsearch
@@ -179,7 +179,7 @@ sudo chown -R 1000:1000 $(pwd) /data/elasticsearch
docker run --rm --memory= "4g" -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v "$(pwd)/data /elasticsearch:/usr/share/elasticsearch/data" docker.elastic.co/elasticsearch/elasticsearch:7.16.3
```
配置`app.ini`
設定`app.ini`
```ini
[indexer]
@@ -190,112 +190,112 @@ REPO_INDEXER_TYPE = elasticsearch
REPO_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200
```
### 建和添加 SVGs
### 建和添加 SVGs
SVG 图标是使用 `make svg` 命令建的,命令将图标资源编译到输出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自定义图标
SVG 圖標是使用 `make svg` 命令建的,命令將圖標資源編譯到輸出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自訂圖標
### 建 Logo
### 建 Logo
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images`标从单个 SVG 源文件 assets/logo.svg 建的。要行它Node.js 和 npm 必可用。
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images`標從單個 SVG 源文件 assets/logo.svg 建的。要行它Node.js 和 npm 必可用。
更新 `assets/logo.svg` 并运`make generate-images`,同样的过程也可用于从 SVG 源文件生成自定义 Logo PNG。忽略 gitea 编译选项将仅更新用户指定的 LOGO 文件。
更新 `assets/logo.svg` 並運`make generate-images`,同樣的過程也可用於從 SVG 源文件生成自 Logo PNG。忽略 gitea 編譯選項將僅更新使用者指定的 LOGO 文件。
### 更新 API
建新的 API 路由或修改有的 API 路由,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
些使用 [go-swagger](https://goswagger.io/) 评论的文
[规范](https://goswagger.io/use/spec.html#annotation-syntax)中描述了这些注释的结构
如果您想了解更多有 Swagger 结构的信息,可以查看
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
添加新 API 端的先前 PR 行比,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
新的 API 路由或修改有的 API 路由,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
些使用 [go-swagger](https://goswagger.io/) 評論的文
[規範](https://goswagger.io/use/spec.html#annotation-syntax)中描述了這些註釋的結構
如果您想了解更多有 Swagger 結構的資訊,可以查看
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
添加新 API 端的先前 PR 行比,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
应该注意不要破下游用户依赖的 API。在定的 API 上,一般来说添加是可以接受的,但
API 行根本性更改将会被拒
應該注意不要破下游使用者依賴的 API。在定的 API 上,一般來說添加是可以接受的,但
API 行根本性更改將會被拒
建或更改 API 端点后,请用以下命令重新生成 Swagger 文
或更改 API 端點後,請用以下命令重新生成 Swagger 文
```bash
make generate-swagger
```
应该验证生成的 Swagger 文件:
應該驗證生成的 Swagger 文件:
```bash
make swagger-validate
```
应该提交更改的 swagger JSON 文件。持续集成服务器将使用以下方法查是否已完成:
應該提交更改的 swagger JSON 文件。持續整合伺服器將使用以下方法查是否已完成:
```bash
make swagger-check
```
**注意** 注意,您应该使用 Swagger 2.0 文,而不是 OpenAPI 3 文
**注意** 注意,您應該使用 Swagger 2.0 文,而不是 OpenAPI 3 文
### 创建新的配置选项
### 建立新的設定選項
创建新的配置选项时,将它们添加到 `modules/setting`对应文件。您应该将信息添加到 `custom/conf/app.ini`
到[配置备忘单](../administration/config-cheat-sheet.md)
建立新的設定選項時,將它們添加到 `modules/setting`對應文件。您應該將資訊添加到 `custom/conf/app.ini`
到[設定備忘單](../administration/config-cheat-sheet.md)
`docs/content/doc/advanced/config-cheat-sheet.zh-tw.md` 中找到
### 更改 Logo
更改 Gitea Logo SVG ,您需要运行并提交果的:
更改 Gitea Logo SVG ,您需要運行並提交果的:
```bash
make generate-images
```
这将创建必要的 Gitea 图标和其他图标
這將建立必要的 Gitea 圖標和其他圖標
### 数据库迁
### 資料庫遷
如果您对数据库中的任何数据库持久结构进行重大更改
`models/`,您需要行新的移。可以找到
`models/migrations/` 中。您可以保您的迁移适用于主要
数据库类型使用:
如果您對資料庫中的任何資料庫持久結構進行重大更改
`models/`,您需要行新的移。可以找到
`models/migrations/` 中。您可以保您的遷移適用於主要
資料庫類型使用:
```bash
make test-sqlite-migration # SQLite 切换为适当的数据库
make test-sqlite-migration # SQLite 切換爲適當的數據庫
```
## 测试
## 測試
Gitea 运行两种类型的测试:单元测试和集成测试
Gitea 運行兩種類型的測試:單元測試和整合測試
### 单元测试
### 單元測試
`go test`中的`*_test.go`盖了单元测试
您可以设置环境变`GITEA_UNIT_TESTS_LOG_SQL=1` 以在详细模式下运行测试时显示所有 SQL 句(即设置`GOTESTFLAGS=-v` )。
`go test`中的`*_test.go`蓋了單元測試
您可以設定環境變`GITEA_UNIT_TESTS_LOG_SQL=1` 以在詳細模式下運行測試時顯示所有 SQL 句(即設定`GOTESTFLAGS=-v` )。
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make test # Runs the unit tests
```
### 集成测试
### 整合測試
单元测试不会也不能完全单独测试 Gitea。因此们编写了集成测试;但是,些依赖于数据库
單元測試不會也不能完全單獨測試 Gitea。因此們編寫了整合測試;但是,些依賴於資料庫
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build test-sqlite
```
在 SQLite 境中运行集成测试。集成测试需要安 `git lfs`。其他数据库测试可用,但
可能需要适应当地环境。
在 SQLite 境中運行整合測試。整合測試需要安 `git lfs`。其他資料庫測試可用,但
可能需要適應當地環境。
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有更多信息以及如何运行单个测试
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有更多資訊以及如何運行單個測試
### 测试 PR
### 測試 PR
的持续集成将测试代码是否通过了单元测试,并且所有支持的数据库都将在 Docker 境中通过集成测试
还将测试从几个最新版本的 Gitea 移。
的持續整合將測試程式碼是否通過了單元測試,並且所有支援的資料庫都將在 Docker 境中通過整合測試
還將測試從幾個最新版本的 Gitea 移。
在 PR 中附提交适当的单元测试和集成测试
在 PR 中附提交適當的單元測試和整合測試
## 站文
## 站文
该网站的文档位于 `docs/` 中。如果你改了文档内容,你可以使用以下测试方法行持续集成
該網站的文件位於 `docs/` 中。如果你改了文件內容,你可以使用以下測試方法行持續整合
```bash
make lint-md
@@ -303,32 +303,32 @@ make lint-md
## Visual Studio Code
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
[`contrib/ide/README.md`](https://github.com/go-gitea/gitea/blob/main/contrib/ide/README.md) 解更多信息
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
[`contrib/ide/README.md`](https://github.com/go-gitea/gitea/blob/main/contrib/ide/README.md) 解更多資訊
## Goland
单击 `/main.go` 中函 `func main()` 上的 `Run Application`
可以快速启动一个可调试的 Gitea 例。
單擊 `/main.go` 中函 `func main()` 上的 `Run Application`
可以快速啟動一個可調試的 Gitea 例。
`Run/Debug Configuration` 中的 `Output Directory`须设置为
gitea 项目目录(包含 `main.go``go.mod`
则,启动实例的工作目是 GoLand 的临时目录
防止 Gitea 在开发环境中加载动态资源(例如:模板)。
`Run/Debug Configuration` 中的 `Output Directory`須設定爲
gitea 專案目錄(包含 `main.go``go.mod`
則,啟動實例的工作目是 GoLand 的臨時目錄
防止 Gitea 在開發環境中加載動態資源(例如:模板)。
要在 GoLand 中使用 SQLite 运行单元测试,请设置 `-tags sqlite,sqlite_unlock_notify`
`行/调试配置``Go 工具参数` 中。
要在 GoLand 中使用 SQLite 運行單元測試,請設定 `-tags sqlite,sqlite_unlock_notify`
`行/調試配置``Go 工具參數` 中。
## 提交 PR
更改感到满意后,将它们推送并打开拉取求。它建您允 Gitea Managers 和 Owners 修改您的 PR
分支,因为我们需要在合之前其更新 main 和/或可能是能直接助解决问题
更改感到滿意後,將它們推送並打開拉取求。它建您允 Gitea Managers 和 Owners 修改您的 PR
分支,因爲我們需要在合之前其更新 main 和/或可能是能直接助解決問題
任何 PR 都需要 Gitea 维护者的次批准,且需要通过持续集成。看看我
任何 PR 都需要 Gitea 維護者的次批准,且需要通過持續整合。看看我
[CONTRIBUTING.md](https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md)
如果您需要更多助,请访问 [Discord](https://discord.gg/gitea) #Develop
在那聊天。
如果您需要更多助,請前往 [Discord](https://discord.gg/gitea) #Develop
在那聊天。
在,您已准备好 Hacking Gitea。
在,您已準備好 Hacking Gitea。

View File

@@ -6,21 +6,21 @@ aliases:
- /zh-tw/integrations
---
# 集成
# 整合
Gitea 有一出色的第三方集成社区,以及在其他各种项目中的一流支
Gitea 有一出色的第三方整合社區,以及在其他各種專案中的一流支
正在[awesome-gitea](https://gitea.com/gitea/awesome-gitea)上整理一列表来跟踪这些集成
正在[awesome-gitea](https://gitea.com/gitea/awesome-gitea)上整理一列表來跟蹤這些整合
如果你正在找[CI/CD](https://gitea.com/gitea/awesome-gitea#user-content-devops)
[SDK](https://gitea.com/gitea/awesome-gitea#user-content-sdk)
甚至一些外的[](https://gitea.com/gitea/awesome-gitea#user-content-themes)
你可以在[awesome-gitea](https://gitea.com/gitea/awesome-gitea)中找到它的列表!
如果你正在找[CI/CD](https://gitea.com/gitea/awesome-gitea#user-content-devops)
[SDK](https://gitea.com/gitea/awesome-gitea#user-content-sdk)
甚至一些外的[](https://gitea.com/gitea/awesome-gitea#user-content-themes)
你可以在[awesome-gitea](https://gitea.com/gitea/awesome-gitea)中找到它的列表!
## 填新文件名和
## 填新文件名和
如果你想打开一个具有定名称和内容的新文件,
你可以使用查询参数来实现
如果你想打開一個具有定名稱和內容的新文件,
你可以使用查詢參數來實現
```txt
GET /{{org}}/{{repo}}/_new/{{filepath}}

View File

@@ -6,26 +6,26 @@ aliases:
- /zh-tw/migrations-interfaces
---
# 迁移接口
# 遷移介面
完整移功能在 Gitea 1.9.0 版本中引入。它定义了两个接口,用于支持从其他 Git 管平台迁移存储库数据到 Gitea或者在将来将 Gitea 数据迁移到其他 Git 管平台。
完整移功能在 Gitea 1.9.0 版本中引入。它定義了兩個介面,用於支援從其他 Git 管平台遷移儲存庫資料到 Gitea或者在將來將 Gitea 資料遷移到其他 Git 管平台。
目前已实现了从 GitHub、GitLab 和其他 Gitea 例的移。
目前已實現了從 GitHub、GitLab 和其他 Gitea 例的移。
首先Gitea 在包[modules/migration](https://github.com/go-gitea/gitea/tree/main/modules/migration)中定了一些标准对象。它`Repository``Milestone``Release``ReleaseAsset``Label``Issue``Comment``PullRequest``Reaction``Review``ReviewComment`
首先Gitea 在包[modules/migration](https://github.com/go-gitea/gitea/tree/main/modules/migration)中定了一些標準對象。它`Repository``Milestone``Release``ReleaseAsset``Label``Issue``Comment``PullRequest``Reaction``Review``ReviewComment`
## 下载器接口
## 下載器介面
新的 Git 管平台移,需要进行两个步骤的更新。
新的 Git 管平台移,需要進行兩個步驟的更新。
-应该实现一个`Downloader`,用于获取存储库信息
-应该实现一个`DownloaderFactory`,用于检测 URL 是否匹配,并创建上述的`Downloader`
- 您需要在`init()`中通`RegisterDownloaderFactory`注册`DownloaderFactory`
-應該實現一個`Downloader`,用於獲取儲存庫資訊
-應該實現一個`DownloaderFactory`,用於檢測 URL 是否匹配,並建立上述的`Downloader`
- 您需要在`init()`中通`RegisterDownloaderFactory`註冊`DownloaderFactory`
您可以在[downloader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/downloader.go)中找到这些接口
您可以在[downloader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/downloader.go)中找到這些介面
## 上传器接口
## 上傳器介面
目前,只实现`GiteaLocalUploader`,因此我只能通过此 Uploader 将下载的数据保存到本地的 Gitea 例。目前不支其他上器。
目前,只實現`GiteaLocalUploader`,因此我只能透過此 Uploader 將下載的資料保存到本地的 Gitea 例。目前不支其他上器。
您可以在[uploader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/uploader.go)中找到这些接口
您可以在[uploader.go](https://github.com/go-gitea/gitea/blob/main/modules/migration/uploader.go)中找到這些介面

View File

@@ -8,11 +8,11 @@ aliases:
# OAuth2 提供者
Gitea 支持作为 OAuth2 提供者,允第三方用程序在用户同意的情况下访问其资源。此功能自 1.8.0 版起可用。
Gitea 支援作爲 OAuth2 提供者,允第三方用程式在使用者同意的情況下訪問其資源。此功能自 1.8.0 版起可用。
## 端
## 端
| 端 | URL |
| 端 | URL |
| ------------------------ | ----------------------------------- |
| OpenID Connect Discovery | `/.well-known/openid-configuration` |
| Authorization Endpoint | `/login/oauth/authorize` |
@@ -20,81 +20,81 @@ Gitea 支持作为 OAuth2 提供者,允许第三方应用程序在用户同意
| OpenID Connect UserInfo | `/login/oauth/userinfo` |
| JSON Web Key Set | `/login/oauth/keys` |
## 支的 OAuth2 授
## 支的 OAuth2 授
目前 Gitea 仅支持 [**Authorization Code Grant**](https://tools.ietf.org/html/rfc6749#section-1.3.1) 标准,并额外支以下展:
目前 Gitea 僅支援 [**Authorization Code Grant**](https://tools.ietf.org/html/rfc6749#section-1.3.1) 標準,並額外支以下展:
- [Proof Key for Code Exchange (PKCE)](https://tools.ietf.org/html/rfc7636)
- [OpenID Connect (OIDC)](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth)
Authorization Code Grant 作第三方用程,您需要通过在设置中添加一新的 "用程" (`/user/settings/applications`)。
Authorization Code Grant 作第三方用程,您需要通過在設定中添加一新的 "用程" (`/user/settings/applications`)。
## 范围
## 範圍
Gitea 支以下令牌范围:
Gitea 支以下令牌範圍:
| 名 | 介 |
| 名 | 介 |
| ---------------------------------------- | --------------------------------------------------------------- |
| **(no scope)** | 授予对公共用户配置文件和公共存储库的只读访问权限 |
| **repo** | 完全控制所有存储库 |
| &nbsp;&nbsp;&nbsp; **repo:status** | 授予所有存储库中提交状态的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **public_repo** | 授予对公共存储库的读/写访问权限 |
| **admin:repo_hook** | 授予所有存储库的 Hooks 访问权限,该权限已包含在 `repo` 范围中 |
| &nbsp;&nbsp;&nbsp; **write:repo_hook** | 授予对存储库 Hooks 的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:repo_hook** | 授予对存储库 Hooks 的只读访问权限 |
| **admin:org** | 授予对组织设置的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:org** | 授予对组织设置的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:org** | 授予对组织设置的只读访问权限 |
| **admin:public_key** | 授予公管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:public_key** | 授予对公钥的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:public_key** | 授予对公钥的只读访问权限 |
| **admin:org_hook** | 授予对组织级别 Hooks 的完全访问权限 |
| **admin:user_hook** | 授予对用户级别 Hooks 的完全访问权限 |
| **notification** | 授予通知的完全访问权限 |
| **user** | 授予对用户个人资料信息的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **read:user** | 授予对用户个人资料的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:email** | 授予对用户电子邮件地址的读取权限 |
| &nbsp;&nbsp;&nbsp; **user:follow** | 授予访问权限以注/取消关注用户 |
| **delete_repo** | 授予删除存储库的权限 |
| **package** | 授予对托管包的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:package** | 授予包的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:package** | 授予包的读取权限 |
| &nbsp;&nbsp;&nbsp; **delete:package** | 授予包的删除权限 |
| **admin:gpg_key** | 授予 GPG 密管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:gpg_key** | 授予 GPG 密钥的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:gpg_key** | 授予 GPG 密的只读访问权限 |
| **admin:application** | 授予用程管理的完全访问权限 |
| &nbsp;&nbsp;&nbsp; **write:application** | 授予用程管理的读/写访问权限 |
| &nbsp;&nbsp;&nbsp; **read:application** | 授予用程管理的读取权限 |
| **sudo** | 允以站管理身份行操作 |
| **(no scope)** | 授予對公開使用者設定檔和公開儲存庫的只讀存取權限 |
| **repo** | 完全控制所有儲存庫 |
| &nbsp;&nbsp;&nbsp; **repo:status** | 授予所有儲存庫中提交狀態的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **public_repo** | 授予對公開儲存庫的讀/寫存取權限 |
| **admin:repo_hook** | 授予所有儲存庫的 Hooks 存取權限,該權限已包含在 `repo` 範圍中 |
| &nbsp;&nbsp;&nbsp; **write:repo_hook** | 授予對儲存庫 Hooks 的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:repo_hook** | 授予對儲存庫 Hooks 的只讀存取權限 |
| **admin:org** | 授予對組織設定的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **write:org** | 授予對組織設定的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:org** | 授予對組織設定的只讀存取權限 |
| **admin:public_key** | 授予公管理的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **write:public_key** | 授予對公鑰的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:public_key** | 授予對公鑰的只讀存取權限 |
| **admin:org_hook** | 授予對組織級別 Hooks 的完全存取權限 |
| **admin:user_hook** | 授予對使用者級別 Hooks 的完全存取權限 |
| **notification** | 授予通知的完全存取權限 |
| **user** | 授予對使用者個人資料資訊的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **read:user** | 授予對使用者個人資料的讀取權限 |
| &nbsp;&nbsp;&nbsp; **user:email** | 授予對使用者電子電子郵件地址的讀取權限 |
| &nbsp;&nbsp;&nbsp; **user:follow** | 授予存取權限以注/取消關注使用者 |
| **delete_repo** | 授予刪除儲存庫的權限 |
| **package** | 授予對託管包的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **write:package** | 授予包的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:package** | 授予包的讀取權限 |
| &nbsp;&nbsp;&nbsp; **delete:package** | 授予包的刪除權限 |
| **admin:gpg_key** | 授予 GPG 密管理的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **write:gpg_key** | 授予 GPG 密鑰的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:gpg_key** | 授予 GPG 密的只讀存取權限 |
| **admin:application** | 授予用程管理的完全存取權限 |
| &nbsp;&nbsp;&nbsp; **write:application** | 授予用程管理的讀/寫存取權限 |
| &nbsp;&nbsp;&nbsp; **read:application** | 授予用程管理的讀取權限 |
| **sudo** | 允以站管理身份行操作 |
## 客户端类
## 客戶端類
Gitea 支私密和公共客户端类型,[参见 RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).
Gitea 支私密和公共客戶端類型,[參見 RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-2.1).
对于公共客端, 允在本地回环地址的重定向 URI 中使用任意端口,例如 `http://127.0.0.1/`。根 [RFC 8252 的建](https://datatracker.ietf.org/doc/html/rfc8252#section-8.3)避免使用 `localhost`
對於公共客端, 允在本地迴環地址的重定向 URI 中使用任意端口,例如 `http://127.0.0.1/`。根 [RFC 8252 的建](https://datatracker.ietf.org/doc/html/rfc8252#section-8.3)避免使用 `localhost`
##
##
**注意:** 该示例中尚未使用 PKCE。
**注意:** 該範例中尚未使用 PKCE。
1. 将用户重定向到授权端点,以得他们的访问资源授:
1. 將使用者重定向到授權端點,以得他們的訪問資源授:
```curl
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE
```
设置中注册应用程序以获得 `CLIENT_ID`。`STATE` 是一个随机字符串,它将在获得用户授权后发送回您的用程。`state` 参数是可的,但您应该使用它防止 CSRF 攻
設定中註冊應用程式以獲得 `CLIENT_ID`。`STATE` 是一個隨機字符串,它將在獲得使用者授權後發送回您的用程。`state` 參數是可的,但您應該使用它防止 CSRF 攻
![Authorization Page](/authorize.png)
用户将会被询问是否授权给您的用程。如果他同意了授权,用户将会被重定向到 `REDIRECT_URL`,例如:
使用者將會被詢問是否授權給您的用程。如果他同意了授權,使用者將會被重定向到 `REDIRECT_URL`,例如:
```curl
https://[REDIRECT_URI]?code=RETURNED_CODE&state=STATE
```
2. 使用重定向提供的 `code`,您可以求一新的用程和 Refresh Token。Access Token Endpoint 接受 `application/json` 或 `application/x-www-form-urlencoded` 型的 POST 求,例如:
2. 使用重定向提供的 `code`,您可以求一新的用程和 Refresh Token。Access Token Endpoint 接受 `application/json` 或 `application/x-www-form-urlencoded` 型的 POST 求,例如:
```curl
POST https://[YOUR-GITEA-URL]/login/oauth/access_token
@@ -121,8 +121,8 @@ Gitea 支持私密和公共客户端类型,[参见 RFC 6749](https://datatrack
}
```
`CLIENT_SECRET` 是生成给应用程的唯一密钥。请注意,该密钥只会在您使用 Gitea 创建/注册应用程序后出现一次。如果您失了密,您必须在应用程序设置中重新生成密
`CLIENT_SECRET` 是生成給應用程的唯一密鑰。請注意,該密鑰只會在您使用 Gitea 建立/註冊應用程式後出現一次。如果您失了密,您必須在應用程式設定中重新生成密
`access_token` 求中的 `REDIRECT_URI` 必须与 `authorize` 求中的 `REDIRECT_URI` 相符。
`access_token` 求中的 `REDIRECT_URI` 必須與 `authorize` 求中的 `REDIRECT_URI` 相符。
3. 使用 `access_token` 来构造 [API ](development/api-usage.md#oauth2-provider) 以读写用户的资源。
3. 使用 `access_token` 來構造 [API ](api-usage) 以讀寫使用者的資源。