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,11 +46,11 @@ 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 認證
@@ -60,4 +62,4 @@ $ curl --url https://yourusername:yourpassword@gitea.your.host/api/v1/users/your
## 使用 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
您需要 [安裝 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` 的版本而有差。因此推安裝我们持续集成使用
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必須的。Gitea 使用 `gofmt`
格式化源程式碼。然而,`gofmt`果可能因 `go` 的版本而有差。因此推安裝我們持續整合使用
的 Go 版本。截至上次更新Go 版本應該是 @goVersion@。
## 安裝 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,30 +190,30 @@ 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 路由,您**必須**
建立新的 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)
些使用 [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
@@ -225,77 +225,77 @@ make generate-swagger
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
@@ -304,31 +304,31 @@ 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/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) 以讀寫使用者的源。