Update zh tw languages and fix some broken links (#455)

---------

Co-authored-by: silverwind <[email protected]>
Co-authored-by: silverwind <[email protected]>
Reviewed-on: https://gitea.com/gitea/docs/pulls/455
Reviewed-by: silverwind <[email protected]>
This commit is contained in:
Lunny Xiao
2026-07-09 23:41:46 +00:00
co-authored by silverwind silverwind
parent c0f8a04185
commit 965c269495
652 changed files with 30864 additions and 30792 deletions
@@ -13,19 +13,19 @@ aliases:
## 獲取頁面
Gitea 源碼附帶了例頁面,位於 `contrib/legal` 目錄中。將它們複製到 `custom/public/assets/` 目錄下。例如,如果要添加隱私政策:
Gitea 源程式碼附帶了例頁面,位於 `contrib/legal` 目錄中。將它們複製到 `custom/public/assets/` 目錄下。例如,如果要添加隱私政策:
```
wget -O /path/to/custom/public/assets/privacy.html https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/legal/privacy.html.sample
```
現在,你需要編輯該頁面以滿足你的需求。特別是,你必須更改電子郵件地址、網址以及與 "Your Gitea Instance" 相關的引用,以匹配你的情況。
現在,你需要編輯該頁面以滿足你的需求。特別是,你必須更改電子電子郵件地址、網址以及與 "Your Gitea Instance" 相關的引用,以匹配你的情況。
請務必不要放置會暗示 Gitea 項目對你的服器負責的一般服務條款或隱私聲明。
請務必不要放置會暗示 Gitea 專案對你的服器負責的一般服務條款或隱私聲明。
## 使其可見
建或追加到 `/path/to/custom/templates/custom/extra_links_footer.tmpl` 文件中:
或追加到 `/path/to/custom/templates/custom/extra_links_footer.tmpl` 文件中:
```go
<a class="item" href="{{AppSubUrl}}/assets/privacy.html">隱私政策</a>
@@ -8,206 +8,206 @@ aliases:
# 認證
## 轻量级目錄访问协议Lightweight Directory Access ProtocolLDAP
## 輕量級目錄訪問協議Lightweight Directory Access ProtocolLDAP
過 BindDN 的 LDAP 和單認證方式 LDAP 共享以下字段:
過 BindDN 的 LDAP 和單認證方式 LDAP 共享以下欄位:
- 認證名稱 **(必選)**
- 分配新授方法的名稱。
- 分配新授方法的名稱。
-**(必選)**
-**(必選)**
- LDAP 服的主地址.
- LDAP 服的主地址.
- 例如:`mydomain.com`
- 端口 **(必選)**
- 端口 **(必選)**
- LDAP 服的端口.
- LDAP 服的端口.
- 例如: LDAP `389`/ LDAPs `636`
- 安全协议 (可選)
- 安全協議 (可選)
- 接 LDAP 服务器时是否使用 TLS 协议
- 接 LDAP 伺服器時是否使用 TLS 協議
- 管理员過滤規則 (可選)
- 管理員過濾規則 (可選)
- LDAP 過器,用指定哪些使用者應該被予管理员特权。如果使用者帳戶符合過滤器条件,該使用者被授予管理员权限。
- 例:`(objectClass=adminAccount)`
- 适用于 Microsoft Active DirectoryAD)的例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
- LDAP 過器,用指定哪些使用者應該被予管理員特權。如果使用者帳戶符合過濾器條件,該使用者被授予管理員權限。
- 例:`(objectClass=adminAccount)`
- 適用於 Microsoft Active DirectoryAD)的例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
- 使用者名性(可選)
- 使用者名稱屬性(可選)
- 使用者 LDAP 记录中包含使用者名稱的属性。在第一次成功登入后,将使用指定的性值作為新的 Gitea 账户使用者名。若留空,使用登入表單上提供的使用者名。
- 提供的登入名与多个属性匹配时,这一選非常有用,但是有一特定性應該用 Gitea 账户名稱,請参阅"使用者過器"。
- 例:uid
- 适用于 Microsoft Active DirectoryAD)的例:`sAMAccountName`
- 使用者 LDAP 記錄中包含使用者名稱稱的屬性。在第一次成功登入後,將使用指定的性值作為新的 Gitea 帳號使用者名。若留空,使用登入表單上提供的使用者名
- 提供的登入名與多個屬性匹配時,這一選非常有用,但是有一特定性應該用 Gitea 帳號名稱,請參閱"使用者過器"。
- 例:uid
- 適用於 Microsoft Active DirectoryAD)的例:`sAMAccountName`
- 名字性(可選)
- 名字性(可選)
- 使用者 LDAP 记录中包含使用者名字的性。将用于填充他们的账户信息
- 例:givenName
- 使用者 LDAP 記錄中包含使用者名字的性。將用於填充他們的帳號資訊
- 例:givenName
- 姓氏性(可選)
- 姓氏性(可選)
- 使用者 LDAP 记录中包含使用者姓氏的性。将用于填充他们的账户信息
- 例:`sn`
- 使用者 LDAP 記錄中包含使用者姓氏的性。將用於填充他們的帳號資訊
- 例:`sn`
- 电子邮件属**(必選)**
- 使用者 LDAP 记录中包含使用者电子邮件地址的性。将用于填充他们的账户信息
- 例:`mail`
- 電子郵件屬**(必選)**
- 使用者 LDAP 記錄中包含使用者電子電子郵件地址的性。將用於填充他們的帳號資訊
- 例:`mail`
### LDAP(via BindDN)
需要额外设置以下字段:
需要額外設定以下欄位:
- 定 DN (可選)
- 定 DN (可選)
- 搜索使用者时绑定到 LDAP 服器的 DN。可以留空以執行匿名搜索。
- 例: `cn=Search,dc=mydomain,dc=com`
- 搜索使用者時綁定到 LDAP 服器的 DN。可以留空以執行匿名搜索。
- 例: `cn=Search,dc=mydomain,dc=com`
- 定密碼 (可選)
- 定密碼 (可選)
- 上述指定的 Bind DN绑定区别名)的密碼,如果有的。注意:該密碼在服器上使用 SECRET_KEY 進行加密儲。仍然建议确保 Bind DN 具有可能少的限。
- 上述指定的 Bind DN綁定區別名)的密碼,如果有的。注意:該密碼在服器上使用 SECRET_KEY 進行加密儲。仍然建議確保 Bind DN 具有可能少的限。
- 使用者搜索基 **(必選)**
- 使用者搜索基 **(必選)**
- 是用搜索使用者帳戶的 LDAP 基础路径.
- 例: `ou=Users,dc=mydomain,dc=com`
- 是用搜索使用者帳戶的 LDAP 基礎路徑.
- 例: `ou=Users,dc=mydomain,dc=com`
- 使用者過規則 **(必選)**
- LDAP 過滤器声明如何查找试图進行身份驗證的使用者记录
`%[1]s`匹配參數将替换為登入表單中出的登入名
- 例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
- 例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))`
- 如需多次替,應使用 `%[1]s`,例如在提供的登入名与多个属性(如使用者标识符、电子邮件甚至电话号码)進行匹配
- 例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
- 用使用者同步
- 这个選项启用了一个周期性任,用于将 Gitea 使用者 LDAP 服器進行同步。默认的同步期是每 24 小
- 使用者過規則 **(必選)**
- LDAP 過濾器聲明如何查找試圖進行身份驗證的使用者記錄
`%[1]s`匹配參數將替換為登入表單中出的登入名
- 例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
- 例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))`
- 如需多次替,應使用 `%[1]s`,例如在提供的登入名與多個屬性(如使用者標識符、電子郵件甚至電話號碼)進行匹配
- 例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
- 用使用者同步
- 這個選項啟用了一個週期性任,用於將 Gitea 使用者 LDAP 服器進行同步。預設的同步期是每 24 小
但您可以在 app.ini 文件中進行更改。
此部分的详细说明,請参阅[sample
此部分的詳細說明,請參閱[sample
app.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
的*cron.sync_external_users* 部分的注释。前面提到的*User Search Base*和*User Filter*
设置将限制哪些使用者可以使用 Gitea 以及哪些使用者被同步。
在初始行任务时,将根据给定的设置建立所有 LDAP 匹配的使用者,因此在使用大型企 LDAP 目錄需要小心。
的*cron.sync_external_users* 部分的註釋。前面提到的*User Search Base*和*User Filter*
設定將限制哪些使用者可以使用 Gitea 以及哪些使用者被同步。
在初始行任務時,將根據給定的設定建立所有 LDAP 匹配的使用者,因此在使用大型企 LDAP 目錄需要小心。
### LDAP(simple auth)
需要额外设置以下字段:
需要額外設定以下欄位:
- 使用者 DN **(必選)**
- 用作使用者 DN 的模板。匹配參數 `%s` 将替换為登入表單中的登入名。
- 例: `cn=%s,ou=Users,dc=mydomain,dc=com`
- 例: `uid=%s,ou=Users,dc=mydomain,dc=com`
- 用作使用者 DN 的模板。匹配參數 `%s` 將替換為登入表單中的登入名。
- 例: `cn=%s,ou=Users,dc=mydomain,dc=com`
- 例: `uid=%s,ou=Users,dc=mydomain,dc=com`
- 使用者搜索基 (可選)
- 使用者搜索基 (可選)
- 使用者搜索基准声明哪些使用者帳戶被搜索.
- 例: `ou=Users,dc=mydomain,dc=com`
- 使用者搜索基準聲明哪些使用者帳戶被搜索.
- 例: `ou=Users,dc=mydomain,dc=com`
- 使用者過規則 **(必選)**
- LDAP 過滤器声明何时允许使用者登入
`%[1]s`匹配參數将替换為登入表單中出的登入名。
- 例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
- 例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
- 使用者過規則 **(必選)**
- LDAP 過濾器聲明何時允許使用者登入
`%[1]s`匹配參數將替換為登入表單中出的登入名。
- 例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
- 例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
### 使用 LDAP 驗證分组成员
### 使用 LDAP 驗證分組成員
使用以下字段:
使用以下欄位:
-搜索基 DN(可選)
-搜索基 DN(可選)
- 使用的 LDAP DN。
- 例: `ou=group,dc=mydomain,dc=com`
- 使用的 LDAP DN。
- 例: `ou=group,dc=mydomain,dc=com`
- 名過器 (可選)
- 名過器 (可選)
- LDAP 過器,明如何在上述 DN 中查找有效
- 例: `(|(cn=gitea_users)(cn=admins))`
- LDAP 過器,明如何在上述 DN 中查找有效
- 例: `(|(cn=gitea_users)(cn=admins))`
- 中的使用者性 (可選)
- 中的使用者性 (可選)
- 中列出了哪使用者的 LDAP 性。
- 例: `uid`
- 中列出了哪使用者的 LDAP 性。
- 例: `uid`
- 使用者组属性 (可選)
-个组的 LDAP 性包含一个高于使用者性名稱的数组
- 例: `memberUid`
- 使用者組屬性 (可選)
-個組的 LDAP 性包含一個高於使用者性名稱的數組
- 例: `memberUid`
## 可插拔式認證模組(Pluggable Authentication Module,PAM)
这个過程用了 PAMPluggable Authentication Modules)認證。使用者仍然可以過使用者管理手添加到系中。
PAM 提供了一機制,通過使用者進行 PAM 認證来自动将其添加到当前数据库中。為了普通的 Linux 密碼一起使用,
行 Gitea 的使用者還必須具有`/etc/shadow`读取权限,以便在使用公登入时检查账户的有效性。
這個過程用了 PAMPluggable Authentication Modules)認證。使用者仍然可以過使用者管理手添加到系中。
PAM 提供了一機制,通過使用者進行 PAM 認證來自動將其添加到當前資料庫中。為了普通的 Linux 密碼一起使用,
行 Gitea 的使用者還必須具有`/etc/shadow`讀取權限,以便在使用公登入時檢查帳號的有效性。
**注意**:如果使用者已 SSH 公添加到 Gitea 中,使用些密可能会绕過登入查系。因此,
如果您希望禁用使用 PAM 進行身份驗證的使用者,應該在 Gitea 中手禁用該账户,使用置的使用者管理功能。
**注意**:如果使用者已 SSH 公添加到 Gitea 中,使用些密可能會繞過登入查系。因此,
如果您希望禁用使用 PAM 進行身份驗證的使用者,應該在 Gitea 中手禁用該帳號,使用置的使用者管理功能。
1. 配置和安裝准备.
-您建立一管理使用者.
-取消自动注册.
1. 一旦数据库已初始化完成,使用新建立的管理员账户登入.
1. 航至使用者设置(右上角的图标),然后選择
`Site Administration` -> `Authentication Sources`, 並選
1. 設定和安裝準備.
-您建立一管理使用者.
-取消自動註冊.
1. 一旦資料庫已初始化完成,使用新建立的管理員帳號登入.
1. 航至使用者設定(右上角的圖標),然後選擇
`Site Administration` -> `Authentication Sources`, 並選
`Add Authentication Source`.
1.写字段如下:
1.寫欄位如下:
- 認證類型:`PAM`
- 名稱:任何有效的值都可以,如果您意,可以使用"System Authentication"。
- PAM 服名稱:/etc/pam.d/目錄下選择适用于所需認證的正文件[^1]。
- PAM 电子邮件域:使用者認證要附加的电子邮件后缀。例如,如果登入系期望一名為 gituse 的使用者,
並且将此字段设置為 mail.com,那 Gitea 在驗證一 GIT 例的使用者时将期望 user emai 字段為gituser@mail.com[^2]。
- 名稱:任何有效的值都可以,如果您意,可以使用"System Authentication"。
- PAM 服名稱:/etc/pam.d/目錄下選擇適用於所需認證的正文件[^1]。
- PAM 電子郵件域:使用者認證要附加的電子郵件後綴。例如,如果登入系期望一名為 gituse 的使用者,
並且將此欄位設定為 mail.com,那 Gitea 在驗證一 GIT 例的使用者時將期望 user emai 欄位為gituser@mail.com[^2]。
**Note**: PAM 支通過[build-time flags](installation/from-source.md#build)添加,
而官方提供的二進制文件通常不会默认启用此功能。PAM 需要保系上有必要的 libpam 动态库,並且编译器可以访问必要的 PAM 开发头文件。
**Note**: PAM 支通過[build-time flags](installation/from-source.md)添加,
而官方提供的二進制文件通常不會預設啟用此功能。PAM 需要保系上有必要的 libpam 動態庫,並且編譯器可以訪問必要的 PAM 開發頭文件。
[^1]:
例如,在 Debian "Bullseye"上使用标准 Linux 登入,可以使用`common-session-noninteractive`这个值對於其他版本的 Debian
包括 Ubuntu 和 Mint,可能也是有效的,請查您所使用行版的文檔以确认
例如,在 Debian "Bullseye"上使用標準 Linux 登入,可以使用`common-session-noninteractive`這個值對於其他版本的 Debian
包括 Ubuntu 和 Mint,可能也是有效的,請查您所使用行版的文件以確認
[^2]: **PAM 的必選** 請注意:在上面的例中,使用者作為`gituser`而不是`[email protected]`登入到 Gitea 的 Web 面。
[^2]: **PAM 的必選** 請注意:在上面的例中,使用者作為`gituser`而不是`[email protected]`登入到 Gitea 的 Web 面。
## 简單邮件传输协议(Simple Mail Transfer Protocol,SMTP)
## 簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)
此選项允许 Gitea 以 Gitea 使用者身份登入 SMTP 主。請设置以下字段:
此選項允許 Gitea 以 Gitea 使用者身份登入 SMTP 主。請設定以下欄位:
- 身份驗證名稱 **(必選)**
- 分配新授方法的名稱
- 分配新授方法的名稱
- SMTP 驗證類型 **(必選)**
-于连接 SMTP 主的驗證類型,plain 或 login
-於連接 SMTP 主的驗證類型,plain 或 login
-**(必選)**
-**(必選)**
- SMTP 服的主地址
- SMTP 服的主地址
- 例如:`smtp.mydomain.com`
- 端口 **(必選)**
- 端口 **(必選)**
- SMTP 服的端口
- SMTP 服的端口
- 例如: `587`
-的域名
-的域名
- 如果使用公共 SMTP 主或有多域的 SMTP 主,限制哪些域可以登入
- 如果使用公共 SMTP 主或有多域的 SMTP 主,限制哪些域可以登入
限制哪些域可以登入。
- 例: `gitea.com,mydomain.com,mydomain2.com`
- 例: `gitea.com,mydomain.com,mydomain2.com`
- 制使用 SMTPS
- 默认情况下将使用 SMTPS 接到端口 465.如果您希望 smtp 用其他端口,自行设置
-,如果服器提供' STARTTLS '展名,则将使用此展名
- 制使用 SMTPS
- 預設情況下將使用 SMTPS 接到端口 465.如果您希望 smtp 用其他端口,自行設定
-,如果服器提供' STARTTLS '展名,則將使用此展名
- 跳過 TLS 驗證
- 禁用 TLS 驗證身份.
- 該認證源处于激活状态
- 用或禁用此身份驗證源
- 該認證源處於激活狀態
- 用或禁用此身份驗證源
## FreeIPA
- 要使用 FreeIPA 凭据登入 Gitea,需要為 Gitea 建立一个绑定帳戶。
建立一个绑定帳戶:
- 在 FreeIPA 服器上建立一 gitea.ldif 文件,並`dc=example,dc=com`為您的`dn`,然提供一个适当安全的密碼。
- 要使用 FreeIPA 憑據登入 Gitea,需要為 Gitea 建立一個綁定帳戶。
建立一個綁定帳戶:
- 在 FreeIPA 服器上建立一 gitea.ldif 文件,並`dc=example,dc=com`為您的`dn`,然提供一個適當安全的密碼。
```sh
dn: uid=gitea,cn=sysaccounts,cn=etc,dc=example,dc=com
@@ -220,76 +220,76 @@ PAM 提供了一种機制,通過对使用者進行 PAM 認證来自动将其
nsIdleTimeout: 0
```
- 入 LDIF 文件(如果需要,請 localhost 更改為 IPA 服器)。系统会提示您入 Directory Manager 的密碼。:
- 入 LDIF 文件(如果需要,請 localhost 更改為 IPA 服器)。系統會提示您入 Directory Manager 的密碼。:
```sh
ldapmodify -h localhost -p 389 -x -D \
"cn=Directory Manager" -W -f gitea.ldif
```
- 為`gitea_users`添加 IPA :
- 為`gitea_users`添加 IPA :
```sh
ipa group-add --desc="Gitea Users" gitea_users
```
- **提示**:對於 IPA 凭证错误,运行' kinit admin '並提供域管理帳戶密碼.
- 以管理身份登入 Gitea,點擊 Admin Panel 下的`Authentication`。然單擊`Add New Source`並填写详细信息,更改所有适当的地方。
- **提示**:對於 IPA 憑證錯誤,運行' kinit admin '並提供域管理帳戶密碼.
- 以管理身份登入 Gitea,點擊 Admin Panel 下的`Authentication`。然單擊`Add New Source`並填寫詳細資訊,更改所有適當的地方。
## SPNEGO with SSPI (Kerberos/NTLM, for Windows only)
Gitea 支通過 Windows 置的安全支提供程序接口Security Support Provider InterfaceSSPI現 SPNEGO 單登入認證(由 RFC4559 定的方案),用于服务器的 Web 部分。SSPI 僅在 Windows 境中工作,即当服务器和客端都在 Windows 操作系统上运行时
Gitea 支通過 Windows 置的安全支提供程式介面Security Support Provider InterfaceSSPI現 SPNEGO 單登入認證(由 RFC4559 定的方案),用於伺服器的 Web 部分。SSPI 僅在 Windows 境中工作,即當伺服器和客端都在 Windows 操作系統上運行時
在激活 SSPI 單登入認證(SSO)之前,您需要准备您的境:
在激活 SSPI 單登入認證(SSO)之前,您需要準備您的境:
- 在 Active Directory 中建立一个單独的使用者账户gitea.exe 進程在該账户下运行(例如,在 domain.local 域下建立一名為 user 的账户:
- 為行 gitea.exe 的主建立一个服务主體名稱(Service Principal NameSPN),其类别為 HTTP:
- 在 Active Directory 中建立一個單獨的使用者帳號gitea.exe 進程在該帳號下運行(例如,在 domain.local 域下建立一名為 user 的帳號:
- 為行 gitea.exe 的主建立一個服務主體名稱(Service Principal NameSPN),其類別為 HTTP:
- 以特域使用者(例如域管理)的身份启动“命令提示符”或“PowerShell”。
- 行下面的命令, host.domain.local 替為 Web 應用程序将运行的服务器的完全限定域名(FQDN), domain\user 替為在前一步中建立的账户名稱:
- 以特域使用者(例如域管理)的身份啟動“命令提示符”或“PowerShell”。
- 行下面的命令, host.domain.local 替為 Web 應用程式將運行的伺服器的完全限定域名(FQDN), domain\user 替為在前一步中建立的帳號名稱:
```sh
setspn -A HTTP/host.domain.local domain\user
```
在遵循上述步之前,請保您按照以下流程進行操作:
在遵循上述步之前,請保您按照以下流程進行操作:
1. 用之前建立的使用者登入(如果已登入,請先注销)。
2. 保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`设置為 Web 應用程序将运行的服务器的完全限定域名(FQDN),之前建立服主體名稱使用的一致(例如,`host.domain.local`)。
3. 启动 Web 服器(行 `gitea.exe web`)。
4. 在 `Site Administration -> Authentication Sources` 中添加一 `SPNEGO with SSPI` 認證源,以用 SSPI 認證。
5. 在域中的客户端计算机上,使用任何域使用者登入(与运行`gitea.exe`的服器不同)。
6. 如果您使用 Chrome 或 Edge 浏览器,請 Web 應用程的 URL 添加到“本地站”(`Internet選 -> 安全 -> 本地站 -> 站`)。
7. 启动 Chrome 或 Edge 浏览器,航到 Gitea 的 FQDN URL(例如,`http://host.domain.local:3000`)。
8. 在控制面板中點擊“Sign In”按,然后選择 SSPI将会自动使用前登入到计算机的使用者進行登入。
9. 如果無法正常工作,請保:
- 您不是在行`gitea.exe`的同一台服务器上行 Web 浏览器。應該在与服务器不同的域加入计算机(客端)上行 Web 浏览器。如果客端和服器都在同一台计算机上运行, NTLM 将优先于 Kerberos。
- 主上只有一`HTTP/...`的 SPN。
- SPN 中只包含主名,不包含端口
- Web 應用程的 URL 添加到"本地站"。
- 服器和客端的时钟差异不超過 5 分(取决于组策略)。
- 在 Internet Explorer 中用了"集成 Windows 身份驗證"(在"高级设置"下)。
1. 用之前建立的使用者登入(如果已登入,請先註銷)。
2. 保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`設定為 Web 應用程式將運行的伺服器的完全限定域名(FQDN),之前建立服主體名稱使用的一致(例如,`host.domain.local`)。
3. 啟動 Web 服器(行 `gitea.exe web`)。
4. 在 `Site Administration -> Authentication Sources` 中添加一 `SPNEGO with SSPI` 認證源,以用 SSPI 認證。
5. 在域中的客戶端計算機上,使用任何域使用者登入(與運行`gitea.exe`的服器不同)。
6. 如果您使用 Chrome 或 Edge 瀏覽器,請 Web 應用程的 URL 添加到“本地站”(`Internet選 -> 安全 -> 本地站 -> 站`)。
7. 啟動 Chrome 或 Edge 瀏覽器,航到 Gitea 的 FQDN URL(例如,`http://host.domain.local:3000`)。
8. 在控制面板中點擊“Sign In”按,然後選擇 SSPI將會自動使用前登入到計算機的使用者進行登入。
9. 如果無法正常工作,請保:
- 您不是在行`gitea.exe`的同一臺伺服器上行 Web 瀏覽器。應該在與伺服器不同的域加入計算機(客端)上行 Web 瀏覽器。如果客端和服器都在同一臺計算機上運行, NTLM 將優先於 Kerberos。
- 主上只有一`HTTP/...`的 SPN。
- SPN 中只包含主名,不包含端口
- Web 應用程的 URL 添加到"本地站"。
- 服器和客端的時鐘差異不超過 5 分(取決於組策略)。
- 在 Internet Explorer 中用了"整合 Windows 身份驗證"(在"高級設定"下)。
遵循些步,您應該能成功用和使用 SSPI 單登入認證(SSO)。
遵循些步,您應該能成功用和使用 SSPI 單登入認證(SSO)。
## 反向代理認證
Gitea 支通過取反向代理传递的 HTTP 中的登入名或者 email 地址来支持反向代理認證。默认是不用的,你可以用以下配置启用。
Gitea 支通過取反向代理傳遞的 HTTP 中的登入名或者 email 地址來支援反向代理認證。預設是不用的,你可以用以下設定啟用。
```ini
[service]
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
```
默认的登入使用者名的 HTTP 是 `X-WEBAUTH-USER`,你可以過修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果使用者不存在,可以自建立使用者,然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。
預設的登入使用者名的 HTTP 是 `X-WEBAUTH-USER`,你可以過修改 `REVERSE_PROXY_AUTHENTICATION_USER` 來變更它。如果使用者不存在,可以自建立使用者,然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 來啟用它。
默认的登入使用者 Email 的 HTTP 是 `X-WEBAUTH-EMAIL`,你可以過修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 来变更它。如果使用者不存在,可以自建立使用者,然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。你也可以過修改 `ENABLE_REVERSE_PROXY_EMAIL` 来启用或停用这个 HTTP
預設的登入使用者 Email 的 HTTP 是 `X-WEBAUTH-EMAIL`,你可以過修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 來變更它。如果使用者不存在,可以自建立使用者,然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 來啟用它。你也可以過修改 `ENABLE_REVERSE_PROXY_EMAIL` 來啟用或停用這個 HTTP
如果设置了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`使用者的全名会从 `X-WEBAUTH-FULLNAME` 取,这样在自建立使用者时将使用这个字段作為使用者全名,你也可以過修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 来变更 HTTP
如果設定了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`使用者的全名會從 `X-WEBAUTH-FULLNAME` 取,這樣在自建立使用者時將使用這個欄位作為使用者全名,你也可以過修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 來變更 HTTP
你也可以過修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加安全性,默认值是 `127.0.0.0/8,::1/128`。 通過 `REVERSE_PROXY_LIMIT` 可以设置最多信任几级反向代理。
你也可以過修改 `REVERSE_PROXY_TRUSTED_PROXIES` 來設定反向代理的 IP 地址範圍,加安全性,預設值是 `127.0.0.0/8,::1/128`。 通過 `REVERSE_PROXY_LIMIT` 可以設定最多信任幾級反向代理。
你可以過以下配置為 API 用此認證方法:
你可以過以下設定為 API 用此認證方法:
```ini
[service]
@@ -297,5 +297,5 @@ ENABLE_REVERSE_PROXY_AUTHENTICATION_API = true
```
:::note
此方法用 API ,反向代理负责处理 CSRF 保
此方法用 API ,反向代理負責處理 CSRF 保
:::
@@ -7,19 +7,19 @@ aliases:
- /zh-tw/backup-and-restore
---
# 备份与恢复
# 備份與恢復
Gitea 已经实現了 `dump` 命令可以用来备份所有需要的文件到一 zip 压缩文件。該压缩文件可以被用進行数据恢复
Gitea 已經實現了 `dump` 命令可以用來備份所有需要的文件到一 zip 壓縮文件。該壓縮文件可以被用進行資料恢復
## 份一致性
## 份一致性
為了保 Gitea 例的一致性,在份期必須关闭它。
為了保 Gitea 例的一致性,在份期必須關閉它。
Gitea 包括数据库、文件和 Git 存放庫,它被使用所有些都会发生变化。例如,当迁移正在進行,在数据库中建立一个事务,而 Git 存放庫正在被制。如果备份发生在移的中Git 存放庫可能是不完整的,尽管数据库声稱它是完整的,因為它是在之后被转儲的。避免这种竞争条件的唯一方法是在份期停止 Gitea 例。
Gitea 包括資料庫、文件和 Git 存放庫,它被使用所有些都會發生變化。例如,當遷移正在進行,在資料庫中建立一個事務,而 Git 存放庫正在被制。如果備份發生在移的中Git 存放庫可能是不完整的,儘管資料庫聲稱它是完整的,因為它是在之後被轉儲的。避免這種競爭條件的唯一方法是在份期停止 Gitea 例。
## 份命令 (`dump`)
## 份命令 (`dump`)
到 git 使用者的限: `su git`. 再 Gitea 目錄`./gitea dump`。一般会显示类似如下的出:
到 git 使用者的限: `su git`. 再 Gitea 目錄`./gitea dump`。一般會顯示類似如下的出:
```
2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
@@ -30,20 +30,20 @@ Gitea 包括数据库、文件和 Git 存放庫,当它被使用时所有这些
2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip
```
生成的 `gitea-dump-1482906742.zip` 文件将会包含如下容:
生成的 `gitea-dump-1482906742.zip` 文件將會包含如下容:
- `app.ini` - 如果原先存儲在默认的 custom/ 目錄之外,则是配置文件的可選副本
- `custom/` - 所有保存在 `custom/` 目錄下的配置和自定义的文件。
- `data/` - 数据目錄(APP_DATA_PATH),如果使用文件会话,则不包括会话。該目錄包括 `attachments``avatars``lfs``indexers`、如果使用 SQLite 包括 SQLite 文件。
- `app.ini` - 如果原先儲存在預設的 custom/ 目錄之外,則是設定文件的可選副本
- `custom/` - 所有保存在 `custom/` 目錄下的設定和自訂的文件。
- `data/` - 資料目錄(APP_DATA_PATH),如果使用文件會話,則不包括會話。該目錄包括 `attachments``avatars``lfs``indexers`、如果使用 SQLite 包括 SQLite 文件。
- `repos/` - 存放庫目錄的完整副本。
- `gitea-db.sql` - 数据库 dump 出的 SQL。
- `log/` - Logs 文件,如果用作移不是必須的。
- `gitea-db.sql` - 資料庫 dump 出的 SQL。
- `log/` - Logs 文件,如果用作移不是必須的。
间备份文件将会在临时目錄進行建立,如果您要重新指定临时目錄,可以用 `--tempdir` 參數,或者用 `TMPDIR` 环境变量。
間備份文件將會在臨時目錄進行建立,如果您要重新指定臨時目錄,可以用 `--tempdir` 參數,或者用 `TMPDIR` 環境變量。
## 备份数据库
## 備份資料庫
`gitea dump` 建立的 SQL 儲使用 XORMGitea 管理可能更喜使用本地的 MySQL 和 PostgreSQL 儲工具。使用 XORM 转儲数据库时仍然存在一些问题,可能会导致在尝试恢复时出現问题
`gitea dump` 建立的 SQL 儲使用 XORMGitea 管理可能更喜使用本地的 MySQL 和 PostgreSQL 儲工具。使用 XORM 轉儲資料庫時仍然存在一些問題,可能會導致在嘗試恢復時出現問題
```sh
# mysql
@@ -54,23 +54,23 @@ pg_dump -U $USER $DATABASE > gitea-db.sql
### 使用 Docker `dump`
在使用 Docker ,使用 `dump` 命令有一些注意事
在使用 Docker ,使用 `dump` 命令有一些注意事
必須以 `gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 執行該命令;並且,為了让备份文件夹的压缩過程能够顺利執行,`docker exec` 命令必須在 `--tempdir` 部執行。
必須以 `gitea/conf/app.ini` 中指定的 `RUN_USER = <OS_USERNAME>` 執行該命令;並且,為了讓備份文件夾的壓縮過程能夠順利執行,`docker exec` 命令必須在 `--tempdir` 部執行。
例:
例:
```none
docker exec -u <OS_USERNAME> -it -w <--tempdir> $(docker ps -qf 'name=^<NAME_OF_DOCKER_CONTAINER>$') bash -c '/usr/local/bin/gitea dump -c </path/to/app.ini>'
```
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 境的临时目錄;如果您有指定自定义`--tempdir`,那 Gitea 使用 `/tmp` 或 Docker 容器的 `TMPDIR` 环境变量。對於 `--tempdir`,請相應整您的 `docker exec` 命令選
\*注意:`--tempdir` 指的是 Gitea 使用的 Docker 境的臨時目錄;如果您有指定自`--tempdir`,那 Gitea 使用 `/tmp` 或 Docker 容器的 `TMPDIR` 環境變量。對於 `--tempdir`,請相應調整您的 `docker exec` 命令選
果應該是一文件,儲在指定的 `--tempdir` 中,类似于`gitea-dump-1482906742.zip`
果應該是一文件,儲在指定的 `--tempdir` 中,類似於`gitea-dump-1482906742.zip`
## 恢命令 (`restore`)
## 恢命令 (`restore`)
前還有恢命令,恢需要人工進行。主要是把文件和数据库進行恢
前還有恢命令,恢需要人工進行。主要是把文件和資料庫進行恢
例如:
@@ -93,54 +93,54 @@ psql -U $USER -d $DATABASE < gitea-db.sql
service gitea restart
```
如果安裝方式生了化(例如 二進制 -> Docker),或者 Gitea 安裝到了之前安裝不同的目錄,需要重新生成存放庫 Git 子。
如果安裝方式生了化(例如 二進制 -> Docker),或者 Gitea 安裝到了之前安裝不同的目錄,需要重新生成存放庫 Git 子。
在 Gitea 运行时,並 Gitea 二進制文件所在的目錄執行:`./gitea admin regenerate hooks`
在 Gitea 運行時,並 Gitea 二進制文件所在的目錄執行:`./gitea admin regenerate hooks`
这样可以保存放庫 Git 子中的應用程序和配置文件路径与当前安裝一致。如果些路径没有更新,存放庫的 `push` 操作将失败
這樣可以保存放庫 Git 子中的應用程式和設定文件路徑與當前安裝一致。如果些路徑沒有更新,存放庫的 `push` 操作將失敗
### 使用 Docker (`restore`)
在基 Docker 的 Gitea 例中,也有恢命令的支。恢過程前面描述的步相同,但路不同。
在基 Docker 的 Gitea 例中,也有恢命令的支。恢過程前面描述的步相同,但路不同。
例:
例:
```sh
# 在容器中打 bash 会话
# 在容器中打 bash 會話
docker exec --user git -it 2a83b293548e bash
# 在容器内解压您的份文件
# 在容器內解壓您的份文件
unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
# 恢 Gitea 数据
# 恢 Gitea 數據
mv data/* /data/gitea
# 恢存放庫本身
# 恢存放庫本身
mv repos/* /data/git/gitea-repositories/
# 整文件
# 調整文件
chown -R git:git /data
# 重新生成 Git
# 重新生成 Git
/usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks
```
Gitea 容器中的默认使用者是 `git`1000:1000)。請用您的 Gitea 容器 ID 或名稱替 `2a83b293548e`
Gitea 容器中的預設使用者是 `git`1000:1000)。請用您的 Gitea 容器 ID 或名稱替 `2a83b293548e`
### 使用 Docker-rootless (`restore`)
在 Docker-rootless 容器中的恢工作流程只是要使用的目錄不同:
在 Docker-rootless 容器中的恢工作流程只是要使用的目錄不同:
```sh
# 在容器中打 bash 会话
# 在容器中打 bash 會話
docker exec --user git -it 2a83b293548e bash
# 在容器内解压您的份文件
# 在容器內解壓您的份文件
unzip gitea-dump-1610949662.zip
cd gitea-dump-1610949662
# 恢 app.ini
# 恢 app.ini
mv data/conf/app.ini /etc/gitea/app.ini
# 恢 Gitea 数据
# 恢 Gitea 數據
mv data/* /var/lib/gitea
# 恢存放庫本身
# 恢存放庫本身
mv repos/* /var/lib/gitea/git/gitea-repositories
# 整文件
# 調整文件
chown -R git:git /etc/gitea/app.ini /var/lib/gitea
# 重新生成 Git
# 重新生成 Git
/usr/local/bin/gitea -c '/etc/gitea/app.ini' admin regenerate hooks
```
@@ -7,37 +7,37 @@ aliases:
- /zh-tw/cmd-embedded
---
# 嵌入源提取工具
# 嵌入源提取工具
Gitea 的可執行文件包含了行所需的所有源:模板、片、式表和翻文件。你可以過在 `custom` 目錄下的相應路中放置替文件来覆盖其中的任何源(详见 [定义 Gitea 配置](../administration/customizing-gitea.md))。
Gitea 的可執行文件包含了行所需的所有源:模板、片、式表和翻文件。你可以過在 `custom` 目錄下的相應路中放置替文件來覆蓋其中的任何源(詳見 [ Gitea 設定](../administration/customizing-gitea.md))。
取嵌入源的副本以進行编辑,可以使用 CLI 中的 `embedded` 命令,通過操作系的 shell 執行。
取嵌入源的副本以進行編輯,可以使用 CLI 中的 `embedded` 命令,通過操作系的 shell 執行。
**注意:** 嵌入源提取工具包含在 Gitea 1.12 及以上版本中。
**注意:** 嵌入源提取工具包含在 Gitea 1.12 及以上版本中。
## 源列表
## 源列表
要列出嵌入在 Gitea 可執行文件中的源,請使用以下法:
要列出嵌入在 Gitea 可執行文件中的源,請使用以下法:
```sh
gitea embedded list [--include-vendored] [patterns...]
```
`--include-vendored` 标志使命令包括被供應的文件,些文件通常被排除在外;即自外部的文件,些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
`--include-vendored` 標誌使命令包括被供應的文件,些文件通常被排除在外;即自外部的文件,些文件是 Gitea 所需的(例如 [octicons](https://octicons.github.com/) 等)。
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作為其 glob 法。以下是一些例:
可以提供一系列文件搜索模式。Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作為其 glob 法。以下是一些例:
- 列出所有模板文件,無在哪个虚拟目錄下:`**.tmpl`
- 列出所有件模板文件:`templates/mail/**.tmpl`
- 列出所有模板文件,無在哪個虛擬目錄下:`**.tmpl`
- 列出所有件模板文件:`templates/mail/**.tmpl`
列出 `public/assets/img` 目錄下的所有文件:`public/assets/img/**`
不要忘為模式使用引,因為空格、`*` 和其他字符可能命令行解器有特殊含
不要忘為模式使用引,因為空格、`*` 和其他字符可能命令行解器有特殊含
如果未提供模式,列出所有文件。
如果未提供模式,列出所有文件。
### 例:列出所有嵌入文件
### 例:列出所有嵌入文件
列出所有路中包含 `openid` 的嵌入文件:
列出所有路中包含 `openid` 的嵌入文件:
```sh
$ gitea embedded list '**openid**'
@@ -51,33 +51,33 @@ templates/user/auth/signup_openid_register.tmpl
templates/user/settings/security_openid.tmpl
```
## 提取
## 提取
要提取嵌入在 Gitea 可執行文件中的源,請使用以下法:
要提取嵌入在 Gitea 可執行文件中的源,請使用以下法:
```sh
gitea [--config {file}] embedded extract [--destination {dir}|--custom] [--overwrite|--rename] [--include-vendored] {patterns...}
```
`--config`项用于告知 Gitea `app.ini` 配置文件的位置(如果不在默认位置)。此選僅在使用 `--custom` 标志时使用。
`--config`項用於告知 Gitea `app.ini` 設定文件的位置(如果不在預設位置)。此選僅在使用 `--custom` 標誌時使用。
`--destination`项用于指定提取文件的目目錄。默认為当前目錄。
`--destination`項用於指定提取文件的目目錄。預設為當前目錄。
`--custom` 标志告知 Gitea 直接文件提取到 `custom` 目錄中。為使其正常工作,該命令需要知道 `app.ini` 配置文件的位置(通過 `--config` 指定),並且根据配置的不同,需要 Gitea 通常启动的目錄行。有关详细信息,請参阅 [定义 Gitea 配置](../administration/customizing-gitea.md)。
`--custom` 標誌告知 Gitea 直接文件提取到 `custom` 目錄中。為使其正常工作,該命令需要知道 `app.ini` 設定文件的位置(通過 `--config` 指定),並且根據設定的不同,需要 Gitea 通常啟動的目錄行。有關詳細資訊,請參閱 [ Gitea 設定](../administration/customizing-gitea.md)。
`--overwrite` 标志允许覆盖目标目錄中的任何現有文件。
`--overwrite` 標誌允許覆蓋目標目錄中的任何現有文件。
`--rename` 标志告知 Gitea 将目标目錄中的任何現有文件重命名為 `filename.bak`。之前的 `.bak` 文件被覆
`--rename` 標誌告知 Gitea 將目標目錄中的任何現有文件重命名為 `filename.bak`。之前的 `.bak` 文件被覆
至少需要提供一文件搜索模式;有模式的法和例,請参阅上述 `list` 子命令。
至少需要提供一文件搜索模式;有模式的法和例,請參閱上述 `list` 子命令。
### 重要提示
保**只提取需要自定义的文件**。位 `custom` 目錄中的文件不受到 Gitea 的升過程的影響。 Gitea 升到新版本(通過替可執行文件)时,许多嵌入文件将发生变化。Gitea 尊重並使用在 `custom` 目錄中找到的任何文件,即使些文件是的和不容的。
保**只提取需要自的文件**。位 `custom` 目錄中的文件不受到 Gitea 的升過程的影響。 Gitea 升到新版本(通過替可執行文件)時,許多嵌入文件將發生變化。Gitea 尊重並使用在 `custom` 目錄中找到的任何文件,即使些文件是的和不容的。
### 例:提取件模板
### 例:提取件模板
将邮件模板提取到临时目錄:
將郵件模板提取到臨時目錄:
```sh
$ mkdir tempdir
@@ -11,523 +11,523 @@ aliases:
## 用法
`gitea [全局選项] 命令 [命令或全局選项] [參數...]`
`gitea [全域選項] 命令 [命令或全域選項] [參數...]`
## 全局選项
## 全域選項
所有全局選项均可被放置在命令级别
所有全域選項均可被放置在命令級別
- `--help``-h`显示帮助文本並退出。可選。
- `--version``-v`示版本信息並退出。可選。 (例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。
- `--custom-path path``-C path`Gitea 自定义文件的路。可選。 (默认值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。
- `--config path``-c path`Gitea 配置文件的路。可選。 (默认值:`custom`/conf/app.ini)。
- `--work-path path``-w path`Gitea 的 `AppWorkPath`。可選。 (默认值:LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`)
- `--help``-h`顯示幫助文本並退出。可選。
- `--version``-v`示版本資訊並退出。可選。 (例:`Gitea version 1.1.0+218-g7b907ed built with: bindata, sqlite`)。
- `--custom-path path``-C path`Gitea 自文件的路。可選。 (預設值:`AppWorkPath`/custom 或 `$GITEA_CUSTOM`)。
- `--config path``-c path`Gitea 設定文件的路。可選。 (預設值:`custom`/conf/app.ini)。
- `--work-path path``-w path`Gitea 的 `AppWorkPath`。可選。 (預設值:LOCATION_OF_GITEA_BINARY 或 `$GITEA_WORK_DIR`)
注意:默认的 custom-path、config 和 work-path 也可以在构建时更改(如果需要)。
注意:預設的 custom-path、config 和 work-path 也可以在構建時更改(如果需要)。
## 命令
### web
启动服务器:
啟動伺服器:
-
- `--port number``-p number`:端口。可選。 (默认值:3000)。覆盖配置文件中的设置
- `--install-port number`行安裝面的端口。可選。 (默认值:3000)。覆盖配置文件中的设置
- `--pid path``-P path`Pid 文件的路。可選。
- `--quiet``-q`:只在控制台上输出 Fatal 日,用于在设置日志之前出的日
- `--verbose`:在控制台上输出跟踪日志,用于在设置日志之前出的日
- 例:
-
- `--port number``-p number`:端口。可選。 (預設值:3000)。覆蓋設定文件中的設定
- `--install-port number`行安裝面的端口。可選。 (預設值:3000)。覆蓋設定文件中的設定
- `--pid path``-P path`Pid 文件的路。可選。
- `--quiet``-q`:只在控制檯上輸出 Fatal 日,用於在設定日誌之前出的日
- `--verbose`:在控制檯上輸出跟蹤日誌,用於在設定日誌之前出的日
- 例:
- `gitea web`
- `gitea web --port 80`
- `gitea web --config /etc/gitea.ini --pid /some/custom/gitea.pid`
- 注意:
- Gitea 不應以 root 使用者身份行。要定到低 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新執行此操作。
- Gitea 不應以 root 使用者身份行。要定到低 1024 的端口,您可以在 Linux 上使用 setcap 命令:`sudo setcap 'cap_net_bind_service=+ep' /path/to/gitea`。每次更新 Gitea 都需要重新執行此操作。
### admin
管理操作:
管理操作:
- 命令:
- `user`
- `list`
-
- `--admin`:僅列出管理使用者。可選。
-
- `--admin`:僅列出管理使用者。可選。
- 描述:列出所有現有使用者。
- 例:
- 例:
- `gitea admin user list`
- `delete`
-
- `--email`:要除的使用者的电子邮件。
- `--username`:要除的使用者的使用者名。
- `--id`:要除的使用者的 ID。
- 必須提供 `--id``--username``--email` 中的一。如果提供多个,则所有件必須匹配。
- 例:
-
- `--email`:要除的使用者的電子郵件。
- `--username`:要除的使用者的使用者名
- `--id`:要除的使用者的 ID。
- 必須提供 `--id``--username``--email` 中的一。如果提供多個,則所有件必須匹配。
- 例:
- `gitea admin user delete --id 1`
- `create`
-
- `--name value`:使用者名。必填。自 Gitea 1.9.0 版本起,請改用 `--username` 标志
- `--username value`:使用者名。必填。Gitea 1.9.0 新增。
-
- `--name value`:使用者名。必填。自 Gitea 1.9.0 版本起,請改用 `--username` 標誌
- `--username value`:使用者名。必填。Gitea 1.9.0 新增。
- `--password value`:密碼。必填。
- `--email value`箱。必填。
- `--admin`:如果提供此選项,将建立一管理使用者。可選。
- `--access-token`:如果提供,為使用者建立访问令牌。可選。(默认值:false)。
- `--must-change-password`:如果提供,建立的使用者在初始登入需要選择一个新密碼。可選。(默认值:true)。
- `--random-password`:如果提供,使用随机生成的密碼作為建立使用者的密碼。`--password` 的值被忽略。可選。
- `--random-password-length`:如果提供,将用于配置随机生成密碼的度。可選。(默认值:12
- 例:
- `--email value`箱。必填。
- `--admin`:如果提供此選項,將建立一管理使用者。可選。
- `--access-token`:如果提供,為使用者建立存取權杖。可選。(預設值:false)。
- `--must-change-password`:如果提供,建立的使用者在初始登入需要選擇一個新密碼。可選。(預設值:true)。
- `--random-password`:如果提供,使用隨機生成的密碼作為建立使用者的密碼。`--password` 的值被忽略。可選。
- `--random-password-length`:如果提供,將用於設定隨機生成密碼的度。可選。(預設值:12
- 例:
- `gitea admin user create --username myname --password asecurepassword --email [email protected]`
- `change-password`
-
- `--username value``-u value`:使用者名。必填。
-
- `--username value``-u value`:使用者名。必填。
- `--password value``-p value`:新密碼。必填。
- 例:
- 例:
- `gitea admin user change-password --username myname --password asecurepassword`
- `must-change-password`
- 參數:
- `[username...]`:需要更改密碼的使用者
-
- `--all``-A`制所有使用者更改密碼
- `--exclude username``-e username`:排除定的使用者。可以多次设置
- `--unset`:撤销对给定使用者的制密碼更改
-
- `--all``-A`制所有使用者更改密碼
- `--exclude username``-e username`:排除定的使用者。可以多次設定
- `--unset`:撤銷對給定使用者的制密碼更改
- `regenerate`
-
-
- `hooks`:重新生成所有存放庫的 Git Hooks。
- `keys`:重新生成 authorized_keys 文件。
- 例:
- 例:
- `gitea admin regenerate hooks`
- `gitea admin regenerate keys`
- `auth`
- `list`
- 描述:列出所有存在的外部認證源。
- 例:
- 例:
- `gitea admin auth list`
- `delete`
-
- `--id`:要除的源的 ID。必填。
- 例:
-
- `--id`:要除的源的 ID。必填。
- 例:
- `gitea admin auth delete --id 1`
- `add-oauth`
-
- `--name`:應用程名稱。
-
- `--name`:應用程名稱。
- `--provider`OAuth2 提供者。
- `--key`:客端 IDKey)。
- `--secret`:客端密
- `--auto-discover-url`OpenID Connect 自动发現 URL(僅在使用 OpenID Connect 作為提供程序时需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端上使用自定义 URL。
- `--custom-tenant-id`:在 OAuth 端上使用自定义租户 ID。
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的選)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的選)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的選)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的選)。
- `--icon-url`OAuth2 登入源的自定义图标 URL。
- `--skip-local-2fa`:允源覆本地 2FA。(可選)
- `--scopes`:請求此 OAuth2 源的附加范围。(可選)
- `--required-claim-name`:必須设置的声明名稱,以允使用者使用此源登入。(可選)
- `--required-claim-value`:必須设置的声明值,以允使用者使用此源登入。(可選)
- `--group-claim-name`:提供此源的名的明名稱。(可選)
- `--admin-group`:管理使用者的组声明值。(可選)
- `--restricted-group`:受限使用者的组声明值。(可選)
- `--group-team-map`组与組織团队之间的 JSON 映射。(可選)
- `--group-team-map-removal`:根据组自动激活团队成员资格的除。(可選)
- 例:
- `--key`:客端 IDKey)。
- `--secret`:客端密
- `--auto-discover-url`OpenID Connect 自動發現 URL(僅在使用 OpenID Connect 作為提供程式時需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端上使用自 URL。
- `--custom-tenant-id`:在 OAuth 端上使用自訂租戶 ID。
- `--custom-auth-url`:使用自訂授權 URLGitLab/GitHub 的選)。
- `--custom-token-url`:使用自令牌 URLGitLab/GitHub 的選)。
- `--custom-profile-url`:使用自訂設定文件 URLGitLab/GitHub 的選)。
- `--custom-email-url`:使用自訂電子郵件 URLGitHub 的選)。
- `--icon-url`OAuth2 登入源的自訂圖標 URL。
- `--skip-local-2fa`:允源覆本地 2FA。(可選)
- `--scopes`:請求此 OAuth2 源的附加範圍。(可選)
- `--required-claim-name`:必須設定的聲明名稱,以允使用者使用此源登入。(可選)
- `--required-claim-value`:必須設定的聲明值,以允使用者使用此源登入。(可選)
- `--group-claim-name`:提供此源的名的明名稱。(可選)
- `--admin-group`:管理使用者的組聲明值。(可選)
- `--restricted-group`:受限使用者的組聲明值。(可選)
- `--group-team-map`組與組織團隊之間的 JSON 映射。(可選)
- `--group-team-map-removal`:根據組自動激活團隊成員資格的除。(可選)
- 例:
- `gitea admin auth add-oauth --name external-github --provider github --key OBTAIN_FROM_SOURCE --secret OBTAIN_FROM_SOURCE`
- `update-oauth`
-
-
- `--id`:要更新的源的 ID。必填。
- `--name`:應用程名稱。
- `--name`:應用程名稱。
- `--provider`OAuth2 提供者。
- `--key`:客端 IDKey)。
- `--secret`:客端密
- `--auto-discover-url`OpenID Connect 自动发現 URL(僅在使用 OpenID Connect 作為提供程序时需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端上使用自定义 URL。
- `--custom-tenant-id`:在 OAuth 端上使用自定义租户 ID。
- `--custom-auth-url`:使用自定义授权 URLGitLab/GitHub 的選)。
- `--custom-token-url`:使用自定义令牌 URLGitLab/GitHub 的選)。
- `--custom-profile-url`:使用自定义配置文件 URLGitLab/GitHub 的選)。
- `--custom-email-url`:使用自定义电子邮件 URLGitHub 的選)。
- `--icon-url`OAuth2 登入源的自定义图标 URL。
- `--skip-local-2fa`:允源覆本地 2FA。(可選)
- `--scopes`:請求此 OAuth2 源的附加范围
- `--required-claim-name`:必須设置的声明名稱,以允使用者使用此源登入。(可選)
- `--required-claim-value`:必須设置的声明值,以允使用者使用此源登入。(可選)
- `--group-claim-name`:提供此源的名的明名稱。(可選)
- `--admin-group`:管理使用者的组声明值。(可選)
- `--restricted-group`:受限使用者的组声明值。(可選)
- 例:
- `--key`:客端 IDKey)。
- `--secret`:客端密
- `--auto-discover-url`OpenID Connect 自動發現 URL(僅在使用 OpenID Connect 作為提供程式時需要)。
- `--use-custom-urls`:在 GitLab/GitHub OAuth 端上使用自 URL。
- `--custom-tenant-id`:在 OAuth 端上使用自訂租戶 ID。
- `--custom-auth-url`:使用自訂授權 URLGitLab/GitHub 的選)。
- `--custom-token-url`:使用自令牌 URLGitLab/GitHub 的選)。
- `--custom-profile-url`:使用自訂設定文件 URLGitLab/GitHub 的選)。
- `--custom-email-url`:使用自訂電子郵件 URLGitHub 的選)。
- `--icon-url`OAuth2 登入源的自訂圖標 URL。
- `--skip-local-2fa`:允源覆本地 2FA。(可選)
- `--scopes`:請求此 OAuth2 源的附加範圍
- `--required-claim-name`:必須設定的聲明名稱,以允使用者使用此源登入。(可選)
- `--required-claim-value`:必須設定的聲明值,以允使用者使用此源登入。(可選)
- `--group-claim-name`:提供此源的名的明名稱。(可選)
- `--admin-group`:管理使用者的組聲明值。(可選)
- `--restricted-group`:受限使用者的組聲明值。(可選)
- 例:
- `gitea admin auth update-oauth --id 1 --name external-github-updated`
- `add-smtp`
-
- `--name`:應用程名稱。必填。
- `--auth-type`SMTP 認證類型(PLAIN/LOGIN/CRAM-MD5)。默认為 PLAIN。
- `--host`SMTP 主。必填。
-
- `--name`:應用程名稱。必填。
- `--auth-type`SMTP 認證類型(PLAIN/LOGIN/CRAM-MD5)。預設為 PLAIN。
- `--host`SMTP 主。必填。
- `--port`SMTP 端口。必填。
- `--force-smtps`SMTPS 始在端口 465 上使用。设置此選项以强制在其他端口上使用 SMTPS。
- `--force-smtps`SMTPS 始在端口 465 上使用。設定此選項以強制在其他端口上使用 SMTPS。
- `--skip-verify`:跳過 TLS 驗證。
- `--helo-hostname`送 HELO 使用的主名。留空以发送当前主名。
- `--helo-hostname`送 HELO 使用的主名。留空以發送當前主名。
- `--disable-helo`:禁用 SMTP helo。
- `--allowed-domains`:留空以允所有域。使用逗',')分隔多域。
- `--allowed-domains`:留空以允所有域。使用逗',')分隔多域。
- `--skip-local-2fa`:跳過 2FA 登入。
- `--active`用此認證源。
备注
`--force-smtps``--skip-verify``--disable-helo``--skip-local-2fs``--active`可以用以下形式使用:
- `--option``--option=true`用選
- `--option=false` 以禁用選
如果未指定些選项,则`update-smtp` 中不更改值,或者在 `add-smtp`使用默认`false` 值。
- 例:
- `--active`用此認證源。
備註
`--force-smtps``--skip-verify``--disable-helo``--skip-local-2fs``--active`可以用以下形式使用:
- `--option``--option=true`用選
- `--option=false` 以禁用選
如果未指定些選項,則`update-smtp` 中不更改值,或者在 `add-smtp`使用預設`false` 值。
- 例:
- `gitea admin auth add-smtp --name ldap --host smtp.mydomain.org --port 587 --skip-verify --active`
- `update-smtp`
-
-
- `--id`:要更新的源的 ID。必填。
- 其他選项与 `add-smtp` 共享
- 例:
- 其他選項與 `add-smtp` 共享
- 例:
- `gitea admin auth update-smtp --id 1 --host smtp.mydomain.org --port 587 --skip-verify=false`
- `gitea admin auth update-smtp --id 1 --active=false`
- `add-ldap`:添加新的 LDAP(通過 Bind DN)認證源
-
-
- `--name value`:認證名稱。必填。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名稱。必填。
- `--security-protocol value`:安全協議名稱。必填。
- `--skip-tls-verify`:禁用 TLS 驗證。
- `--host value`LDAP 服器的地址。必填。
- `--port value`接到 LDAP 服务器时使用的端口。必填。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基础路径。必填。
- `--user-filter value`明如何查找试图進行身份驗證的使用者记录的 LDAP 過器。必填。
- `--admin-filter value`:指定是否應授予使用者管理员特权的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者设置為受限状态的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`:使用者 LDAP 记录中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 记录中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 记录中包含使用者电子邮件地址的性。必填。
- `--public-ssh-key-attribute value`:使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`:使用者 LDAP 记录中包含使用者像的性。
- `--bind-dn value`:在搜索使用者时绑定到 LDAP 服器的 DN。
- `--bind-password value`定 DN 的密碼(如果有)。
- `--attributes-in-bind`:在定 DN 上下文中获取属性。
- `--synchronize-users`用使用者同步。
- `--page-size value`:搜索面大小。
- 例:
- `--host value`LDAP 服器的地址。必填。
- `--port value`接到 LDAP 伺服器時使用的端口。必填。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基礎路徑。必填。
- `--user-filter value`明如何查找試圖進行身份驗證的使用者記錄的 LDAP 過器。必填。
- `--admin-filter value`:指定是否應授予使用者管理員特權的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者設定為受限狀態的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 記錄中包含使用者名稱的屬性。
- `--firstname-attribute value`:使用者 LDAP 記錄中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 記錄中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 記錄中包含使用者電子電子郵件地址的性。必填。
- `--public-ssh-key-attribute value`:使用者 LDAP 記錄中包含使用者公共 SSH 密鑰的屬性。
- `--avatar-attribute value`:使用者 LDAP 記錄中包含使用者像的性。
- `--bind-dn value`:在搜索使用者時綁定到 LDAP 服器的 DN。
- `--bind-password value`定 DN 的密碼(如果有)。
- `--attributes-in-bind`:在定 DN 上下文中獲取屬性。
- `--synchronize-users`用使用者同步。
- `--page-size value`:搜索面大小。
- 例:
- `gitea admin auth add-ldap --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-search-base "ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))" --email-attribute mail`
- `update-ldap`:更新現有的 LDAP(通過 Bind DN)認證源
-
-
- `--id value`:認證源的 ID。必填。
- `--name value`:認證名稱。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名稱。
- `--security-protocol value`:安全協議名稱。
- `--skip-tls-verify`:禁用 TLS 驗證。
- `--host value`LDAP 服器的地址。
- `--port value`接到 LDAP 服务器时使用的端口。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基础路径
- `--user-filter value`明如何查找试图進行身份驗證的使用者记录的 LDAP 過器。
- `--admin-filter value`:指定是否應授予使用者管理员特权的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者设置為受限状态的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`:使用者 LDAP 记录中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 记录中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 记录中包含使用者电子邮件地址的性。
- `--public-ssh-key-attribute value`:使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`:使用者 LDAP 记录中包含使用者像的性。
- `--bind-dn value`:在搜索使用者时绑定到 LDAP 服器的 DN。
- `--bind-password value`定 DN 的密碼(如果有)。
- `--attributes-in-bind`:在定 DN 上下文中获取属性。
- `--synchronize-users`用使用者同步。
- `--page-size value`:搜索面大小。
- 例:
- `--host value`LDAP 服器的地址。
- `--port value`接到 LDAP 伺服器時使用的端口。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基礎路徑
- `--user-filter value`明如何查找試圖進行身份驗證的使用者記錄的 LDAP 過器。
- `--admin-filter value`:指定是否應授予使用者管理員特權的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者設定為受限狀態的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 記錄中包含使用者名稱的屬性。
- `--firstname-attribute value`:使用者 LDAP 記錄中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 記錄中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 記錄中包含使用者電子電子郵件地址的性。
- `--public-ssh-key-attribute value`:使用者 LDAP 記錄中包含使用者公共 SSH 密鑰的屬性。
- `--avatar-attribute value`:使用者 LDAP 記錄中包含使用者像的性。
- `--bind-dn value`:在搜索使用者時綁定到 LDAP 服器的 DN。
- `--bind-password value`定 DN 的密碼(如果有)。
- `--attributes-in-bind`:在定 DN 上下文中獲取屬性。
- `--synchronize-users`用使用者同步。
- `--page-size value`:搜索面大小。
- 例:
- `gitea admin auth update-ldap --id 1 --name "my ldap auth source"`
- `gitea admin auth update-ldap --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn`
- `add-ldap-simple`:添加新的 LDAP單身份驗證)認證源
-
- `add-ldap-simple`:添加新的 LDAP單身份驗證)認證源
-
- `--name value`:認證名稱。必填。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名稱。必填。
- `--security-protocol value`:安全協議名稱。必填。
- `--skip-tls-verify`:禁用 TLS 驗證。
- `--host value`LDAP 服器的地址。必填。
- `--port value`接到 LDAP 服务器时使用的端口。必填。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基础路径
- `--user-filter value`明如何查找试图進行身份驗證的使用者记录的 LDAP 過器。必填。
- `--admin-filter value`:指定是否應授予使用者管理员特权的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者设置為受限状态的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`:使用者 LDAP 记录中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 记录中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 记录中包含使用者电子邮件地址的性。必填。
- `--public-ssh-key-attribute value`:使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`:使用者 LDAP 记录中包含使用者像的性。
- `--host value`LDAP 服器的地址。必填。
- `--port value`接到 LDAP 伺服器時使用的端口。必填。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基礎路徑
- `--user-filter value`明如何查找試圖進行身份驗證的使用者記錄的 LDAP 過器。必填。
- `--admin-filter value`:指定是否應授予使用者管理員特權的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者設定為受限狀態的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 記錄中包含使用者名稱的屬性。
- `--firstname-attribute value`:使用者 LDAP 記錄中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 記錄中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 記錄中包含使用者電子電子郵件地址的性。必填。
- `--public-ssh-key-attribute value`:使用者 LDAP 記錄中包含使用者公共 SSH 密鑰的屬性。
- `--avatar-attribute value`:使用者 LDAP 記錄中包含使用者像的性。
- `--user-dn value`:使用者的 DN。必填。
- 例:
- 例:
- `gitea admin auth add-ldap-simple --name ldap --security-protocol unencrypted --host mydomain.org --port 389 --user-dn "cn=%s,ou=Users,dc=mydomain,dc=org" --user-filter "(&(objectClass=posixAccount)(cn=%s))" --email-attribute mail`
- `update-ldap-simple`:更新現有的 LDAP單身份驗證)認證源
-
- `update-ldap-simple`:更新現有的 LDAP單身份驗證)認證源
-
- `--id value`:認證源的 ID。必填。
- `--name value`:認證名稱。
- `--not-active`:停用認證源。
- `--security-protocol value`:安全协议名稱。
- `--security-protocol value`:安全協議名稱。
- `--skip-tls-verify`:禁用 TLS 驗證。
- `--host value`LDAP 服器的地址。
- `--port value`接到 LDAP 服务器时使用的端口。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基础路径
- `--user-filter value`明如何查找试图進行身份驗證的使用者记录的 LDAP 過器。
- `--admin-filter value`:指定是否應授予使用者管理员特权的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者设置為受限状态的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 记录中包含使用者名的属性。
- `--firstname-attribute value`:使用者 LDAP 记录中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 记录中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 记录中包含使用者电子邮件地址的性。
- `--public-ssh-key-attribute value`:使用者 LDAP 记录中包含使用者公共 SSH 密钥的属性。
- `--avatar-attribute value`:使用者 LDAP 记录中包含使用者像的性。
- `--host value`LDAP 服器的地址。
- `--port value`接到 LDAP 伺服器時使用的端口。
- `--user-search-base value`:使用者帳戶在其中搜索的 LDAP 基礎路徑
- `--user-filter value`明如何查找試圖進行身份驗證的使用者記錄的 LDAP 過器。
- `--admin-filter value`:指定是否應授予使用者管理員特權的 LDAP 過器。
- `--restricted-filter value`:指定是否應使用者設定為受限狀態的 LDAP 過器。
- `--username-attribute value`:使用者 LDAP 記錄中包含使用者名稱的屬性。
- `--firstname-attribute value`:使用者 LDAP 記錄中包含使用者名字的性。
- `--surname-attribute value`:使用者 LDAP 記錄中包含使用者姓氏的性。
- `--email-attribute value`:使用者 LDAP 記錄中包含使用者電子電子郵件地址的性。
- `--public-ssh-key-attribute value`:使用者 LDAP 記錄中包含使用者公共 SSH 密鑰的屬性。
- `--avatar-attribute value`:使用者 LDAP 記錄中包含使用者像的性。
- `--user-dn value`:使用者的 DN。
- 例:
- 例:
- `gitea admin auth update-ldap-simple --id 1 --name "my ldap auth source"`
- `gitea admin auth update-ldap-simple --id 1 --username-attribute uid --firstname-attribute givenName --surname-attribute sn`
### cert
生成自名的 SSL 证书。将输出到前目錄下的`cert.pem``key.pem`文件中,並且会覆盖任何現有文件。
生成自名的 SSL 證書。將輸出到前目錄下的`cert.pem``key.pem`文件中,並且會覆蓋任何現有文件。
-
- `--host value`:逗分隔的主名和 IP 地址列表,此证书适用于这些主。支使用通配符。必填。
- `--ecdsa-curve value`:用生成密的 ECDSA 曲线。可選。有效選為 P224、P256、P384、P521。
- `--rsa-bits value`:要生成的 RSA 密的大小。可選。如果设置了--ecdsa-curve忽略此選。(默认值:3072)。
- `--start-date value`证书的建立日期。可選。(格式:`Jan 1 15:04:05 2011`)。
- `--duration value`证书有效期。可選。(默认值:8760h0m0s
- `--ca`:如果提供此選项,则证书将生成自己的证书颁发机构。可選。
- 例:
-
- `--host value`:逗分隔的主名和 IP 地址列表,此證書適用於這些主。支使用通配符。必填。
- `--ecdsa-curve value`:用生成密的 ECDSA 曲。可選。有效選為 P224、P256、P384、P521。
- `--rsa-bits value`:要生成的 RSA 密的大小。可選。如果設定了--ecdsa-curve忽略此選。(預設值:3072)。
- `--start-date value`證書的建立日期。可選。(格式:`Jan 1 15:04:05 2011`)。
- `--duration value`證書有效期。可選。(預設值:8760h0m0s
- `--ca`:如果提供此選項,則證書將生成自己的證書頒發機構。可選。
- 例:
- `gitea cert --host git.example.com,example.com,www.example.com --ca`
### dump
所有文件和数据库导出到一 zip 文件中。出文件保存在前目錄下,类似于`gitea-dump-1482906742.zip`
所有文件和資料庫導出到一 zip 文件中。出文件保存在前目錄下,類似於`gitea-dump-1482906742.zip`
-
- `--file name``-f name`:指定要建立的出文件的名稱。可選。(默认值:gitea-dump-[timestamp].zip)。
- `--tempdir path``-t path`:指定临时目錄的路。可選。(默认值:/tmp)。
- `--skip-repository``-R`:跳過存放庫的出。可選。
- `--skip-custom-dir`:跳過自定义目錄的出。可選。
- `--skip-lfs-data`:跳過 LFS 数据的导出。可選。
- `--skip-attachment-data`:跳過附件数据的导出。可選。
- `--skip-package-data`:跳過包数据的导出。可選。
- `--skip-log`:跳過日志数据的导出。可選。
- `--database``-d`:指定数据库的 SQL 法。可選。
- `--verbose``-V`:如果提供此選项,显示附加详细信息。可選。
- `--type`设置导出的格式。可選。(默认值:zip
- 例:
-
- `--file name``-f name`:指定要建立的出文件的名稱。可選。(預設值:gitea-dump-[timestamp].zip)。
- `--tempdir path``-t path`:指定臨時目錄的路。可選。(預設值:/tmp)。
- `--skip-repository``-R`:跳過存放庫的出。可選。
- `--skip-custom-dir`:跳過自目錄的出。可選。
- `--skip-lfs-data`:跳過 LFS 資料的導出。可選。
- `--skip-attachment-data`:跳過附件資料的導出。可選。
- `--skip-package-data`:跳過包資料的導出。可選。
- `--skip-log`:跳過日誌資料的導出。可選。
- `--database``-d`:指定資料庫的 SQL 法。可選。
- `--verbose``-V`:如果提供此選項,顯示附加詳細資訊。可選。
- `--type`設定導出的格式。可選。(預設值:zip
- 例:
- `gitea dump`
- `gitea dump --verbose`
### generate
于在配置文件中生成随机值和令牌。對於自部署生成值非常有用。
於在設定文件中生成隨機值和令牌。對於自部署生成值非常有用。
- 命令:
- `secret`:
-:
- `INTERNAL_TOKEN`: 用于内部 API 用身份驗證的令牌。
- `JWT_SECRET`: 用 LFS 和 OAUTH2 JWT 身份驗證的密LFS_JWT_SECRET 是此選项的别名,用于向后兼容)。
- `SECRET_KEY`: 全局密钥
- 例:
-:
- `INTERNAL_TOKEN`: 用於內部 API 調用身份驗證的令牌。
- `JWT_SECRET`: 用 LFS 和 OAUTH2 JWT 身份驗證的密LFS_JWT_SECRET 是此選項的別名,用於向後相容)。
- `SECRET_KEY`: 全域密鑰
- 例:
- `gitea generate secret INTERNAL_TOKEN`
- `gitea generate secret JWT_SECRET`
- `gitea generate secret SECRET_KEY`
### keys
提供一 SSHD AuthorizedKeysCommand。需要在 sshd 配置文件中進行配置:
提供一 SSHD AuthorizedKeysCommand。需要在 sshd 設定文件中進行設定:
```ini
...
# -e 的值和 AuthorizedKeysCommandUser 應与运行 Gitea 的使用者名匹配
# -e 的值和 AuthorizedKeysCommandUser 應與運行 Gitea 的使用者名匹配
AuthorizedKeysCommandUser git
AuthorizedKeysCommand /path/to/gitea keys -e git -u %u -t %t -k %k
```
該命令返回适用于提供的密的合 authorized_keys 行。您還應在 `app.ini``[server]` 部分设置`SSH_CREATE_AUTHORIZED_KEYS_FILE=false`
該命令返回適用於提供的密的合 authorized_keys 行。您還應在 `app.ini``[server]` 部分設定`SSH_CREATE_AUTHORIZED_KEYS_FILE=false`
注意: opensshd 要求 Gitea 程由 root 有,並且不可由或其他人入。程必須使用绝对路径指定。
注意: Gitea 必須在行此命令时处于运行状态才能成功。
注意: opensshd 要求 Gitea 程由 root 有,並且不可由或其他人入。程必須使用絕對路徑指定。
注意: Gitea 必須在行此命令時處於運行狀態才能成功。
### migrate
迁移数据库。該命令可用在首次启动服务器之前行其他命令。此命令是等的。
遷移資料庫。該命令可用在首次啟動伺服器之前行其他命令。此命令是等的。
### doctor check
Gitea 例進行诊断,可以修一些可修复的问题
默认只运行部分查,外的查可以考:
Gitea 例進行診斷,可以修一些可修復的問題
預設只運行部分查,外的查可以考:
- `gitea doctor check --list` - 列出所有可用的
- `gitea doctor check --all` - 行所有可用的
- `gitea doctor check --default` - 运行默认的检
- `gitea doctor check --run [check(s),]...` - 行指定的名字的
- `gitea doctor check --list` - 列出所有可用的
- `gitea doctor check --all` - 行所有可用的
- `gitea doctor check --default` - 運行預設的檢
- `gitea doctor check --run [check(s),]...` - 行指定的名字的
有些问题可以通過设置 `--fix`進行自动修复
外的日可以`--log-file=...` 進行设置
有些問題可以透過設定 `--fix`進行自動修復
外的日可以`--log-file=...` 進行設定
#### doctor recreate-table
,在迁移时,旧的列和默认值可能会在数据库模式中保持不变。这可能会导致警告,如下所示:
,在遷移時,舊的列和預設值可能會在資料庫模式中保持不變。這可能會導致警告,如下所示:
```
2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0
```
您可以過以下方式 Gitea 重新建立些表,並将旧数据复制到新表中,並适当设置默认值:
您可以過以下方式 Gitea 重新建立些表,並將舊資料複製到新表中,並適當設定預設值:
```
gitea doctor recreate-table user
```
您可以使用以下方式 Gitea 重新建立多表:
您可以使用以下方式 Gitea 重新建立多表:
```
gitea doctor recreate-table table1 table2 ...
```
如果您希望 Gitea 重新建立所有表,請直接用:
如果您希望 Gitea 重新建立所有表,請直接調用:
```
gitea doctor recreate-table
```
烈建议在运行这些命令之前份您的数据库
烈建議在運行這些命令之前份您的資料庫
### doctor convert
現有的 MySQL 数据库从 utf8 转换為 utf8mb4,或者把 MSSQL 数据库从 varchar 转换為 nvarchar。
現有的 MySQL 資料庫從 utf8 轉換為 utf8mb4,或者把 MSSQL 資料庫從 varchar 轉換為 nvarchar。
### manager
管理行中的服器操作:
管理行中的服器操作:
- 命令:
- `shutdown`: 雅地关闭运行中的進程
- `restart`: 雅地重新启动运行中的進程(對於 Windows 服器尚未現)
- `flush-queues`: 刷新行中的進程中的
-:
- `--timeout value`: 刷新過程的超时时间(默认值: 1m0s
- `--non-blocking`: 设置為 true,以在返回之前不等待刷新完成
- `logging`: 整日命令
- `shutdown`: 雅地關閉運行中的進程
- `restart`: 雅地重新啟動運行中的進程(對於 Windows 服器尚未現)
- `flush-queues`: 刷新行中的進程中的
-:
- `--timeout value`: 刷新過程的超時時間(預設值: 1m0s
- `--non-blocking`: 設定為 true,以在返回之前不等待刷新完成
- `logging`: 調整日命令
- 命令:
- `pause`: 停日志记录
- `pause`: 停日誌記錄
- 注意:
- 如果日志级别低于此级别,日志级别将被临时提升為 INFO。
- Gitea 在一定程度上缓冲日志,並在超過該点后丢弃日志
- `resume`: 恢复日志记录
- `release-and-reopen`: 使 Gitea 放和重新打开用于日志记录的文件和接(相当于向 Gitea 送 SIGUSR1 信)。
- `remove name`: 除指定的日志记录
-:
- `--group group`, `-g group`: 从中删除子记录器的组(默认`default`
- `add`: 添加日志记录
- 如果日誌級別低於此級別,日誌級別將被臨時提升為 INFO。
- Gitea 在一定程度上緩衝日誌,並在超過該點後丟棄日誌
- `resume`: 恢復日誌記錄
- `release-and-reopen`: 使 Gitea 放和重新打開用於日誌記錄的文件和接(相當於向 Gitea 送 SIGUSR1 信)。
- `remove name`: 除指定的日誌記錄
-:
- `--group group`, `-g group`: 從中刪除子記錄器的組(預設`default`
- `add`: 添加日誌記錄
- 命令:
- `console`: 添加控制台日志记录
-:
- `--group value`, `-g value`: 要添加日志记录器的 - 默认為"default"
- `--name value`, `-n value`: 新日志记录器的名稱 - 默认為模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表
- `--prefix value`, `-p value`: 日志记录器的前
- `--color`: 在日中使用
- `--stderr`: 控制台日志输出到 stderr - 僅适用于控制
- `file`: 添加文件日志记录
-:
- `--group value`, `-g value`: 要添加日志记录器的 - 默认為"default"
- `--name value`, `-n value`: 新日志记录器的名稱 - 默认為模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表
- `--prefix value`, `-p value`: 日志记录器的前
- `--color`: 在日中使用
- `--filename value`, `-f value`: 日志记录器的文件名
- `--rotate`, `-r`: 轮转日志
- `--max-size value`, `-s value`: 在轮转之前的最大大小(以字节為單位)
- `--daily`, `-d`: 每天轮转日志
- `--max-days value`, `-D value`: 保留的每日日的最大
- `--compress`, `-z`: 压缩轮转的日
- `--compression-level value`, `-Z value`: 使用的压缩级别
- `conn`: 添加网络连接日志记录
-:
- `--group value`, `-g value`: 要添加日志记录器的 - 默认為"default"
- `--name value`, `-n value`: 新日志记录器的名稱 - 默认為模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表
- `--prefix value`, `-p value`: 日志记录器的前
- `--color`: 在日中使用
- `--reconnect-on-message`, `-R`: 對於每消息重新接主
- `--reconnect`, `-r`: 接中断时重新接主
- `--protocol value`, `-P value`: 设置要使用的协议tcp、unix 或 udp默认為 tcp
- `--address value`, `-a value`: 要接到的主地址和端口(默认為:7020
- `smtp`: 添加 SMTP 日志记录
-:
- `--group value`, `-g value`: 要添加日志记录器的 - 默认為"default"
- `--name value`, `-n value`: 新日志记录器的名稱 - 默认為模式
- `--level value`, `-l value`: 新日志记录器的日志级别
- `--stacktrace-level value`, `-L value`: 堆栈跟踪日志级别
- `--flags value`, `-F value`: 日志记录器的标志
- `--expression value`, `-e value`: 日志记录器的匹配表
- `--prefix value`, `-p value`: 日志记录器的前
- `--color`: 在日中使用
- `--username value`, `-u value`: 邮件服务器使用者名
- `--password value`, `-P value`: 邮件服务器密碼
- `--host value`, `-H value`: 邮件服务器主机(默认為: 127.0.0.1:25
- `--send-to value`, `-s value`: 要送到的电子邮件地址
- `--subject value`, `-S value`: 发送电子邮件的主题标题
- `processes`: 示 Gitea 進程和 Goroutine 信息
-:
- `--flat`: 以平面表格形式示進程,而不是树形结构
- `--no-system`: 不示系進程
- `--stacktraces`: 显示与進程关联的 Goroutine 的堆栈跟踪
- `--json`: 出為 JSON 格式
- `--cancel PID`: 向具有 PID 的進程送取消命令(僅适用于非系進程)
- `console`: 添加控制檯日誌記錄
-:
- `--group value`, `-g value`: 要添加日誌記錄器的 - 預設為"default"
- `--name value`, `-n value`: 新日誌記錄器的名稱 - 預設為模式
- `--level value`, `-l value`: 新日誌記錄器的日誌級別
- `--stacktrace-level value`, `-L value`: 堆棧跟蹤日誌級別
- `--flags value`, `-F value`: 日誌記錄器的標誌
- `--expression value`, `-e value`: 日誌記錄器的匹配表
- `--prefix value`, `-p value`: 日誌記錄器的前
- `--color`: 在日中使用
- `--stderr`: 控制檯日誌輸出到 stderr - 僅適用於控制
- `file`: 添加文件日誌記錄
-:
- `--group value`, `-g value`: 要添加日誌記錄器的 - 預設為"default"
- `--name value`, `-n value`: 新日誌記錄器的名稱 - 預設為模式
- `--level value`, `-l value`: 新日誌記錄器的日誌級別
- `--stacktrace-level value`, `-L value`: 堆棧跟蹤日誌級別
- `--flags value`, `-F value`: 日誌記錄器的標誌
- `--expression value`, `-e value`: 日誌記錄器的匹配表
- `--prefix value`, `-p value`: 日誌記錄器的前
- `--color`: 在日中使用
- `--filename value`, `-f value`: 日誌記錄器的文件名
- `--rotate`, `-r`: 輪轉日誌
- `--max-size value`, `-s value`: 在輪轉之前的最大大小(以位元組為單位)
- `--daily`, `-d`: 每天輪轉日誌
- `--max-days value`, `-D value`: 保留的每日日的最大
- `--compress`, `-z`: 壓縮輪轉的日
- `--compression-level value`, `-Z value`: 使用的壓縮級別
- `conn`: 添加網路連接日誌記錄
-:
- `--group value`, `-g value`: 要添加日誌記錄器的 - 預設為"default"
- `--name value`, `-n value`: 新日誌記錄器的名稱 - 預設為模式
- `--level value`, `-l value`: 新日誌記錄器的日誌級別
- `--stacktrace-level value`, `-L value`: 堆棧跟蹤日誌級別
- `--flags value`, `-F value`: 日誌記錄器的標誌
- `--expression value`, `-e value`: 日誌記錄器的匹配表
- `--prefix value`, `-p value`: 日誌記錄器的前
- `--color`: 在日中使用
- `--reconnect-on-message`, `-R`: 對於每消息重新接主
- `--reconnect`, `-r`: 接中斷時重新接主
- `--protocol value`, `-P value`: 設定要使用的協議tcp、unix 或 udp預設為 tcp
- `--address value`, `-a value`: 要接到的主地址和端口(預設為:7020
- `smtp`: 添加 SMTP 日誌記錄
-:
- `--group value`, `-g value`: 要添加日誌記錄器的 - 預設為"default"
- `--name value`, `-n value`: 新日誌記錄器的名稱 - 預設為模式
- `--level value`, `-l value`: 新日誌記錄器的日誌級別
- `--stacktrace-level value`, `-L value`: 堆棧跟蹤日誌級別
- `--flags value`, `-F value`: 日誌記錄器的標誌
- `--expression value`, `-e value`: 日誌記錄器的匹配表
- `--prefix value`, `-p value`: 日誌記錄器的前
- `--color`: 在日中使用
- `--username value`, `-u value`: 郵件伺服器使用者名
- `--password value`, `-P value`: 郵件伺服器密碼
- `--host value`, `-H value`: 郵件伺服器主機(預設為: 127.0.0.1:25
- `--send-to value`, `-s value`: 要送到的電子電子郵件地址
- `--subject value`, `-S value`: 發送電子郵件的主題標題
- `processes`: 示 Gitea 進程和 Goroutine 資訊
-:
- `--flat`: 以平面表格形式示進程,而不是樹形結構
- `--no-system`: 不示系進程
- `--stacktraces`: 顯示與進程關聯的 Goroutine 的堆棧跟蹤
- `--json`: 出為 JSON 格式
- `--cancel PID`: 向具有 PID 的進程送取消命令(僅適用於非系進程)
### dump-repo
`dump-repo` Git/GitHub/Gitea/GitLab 中转儲存儲库数据
`dump-repo` Git/GitHub/Gitea/GitLab 中轉儲儲存庫資料
-
- `--git_service service`Git 服,可以是 `git``github``gitea``gitlab`。如果 `clone_addr` 可以被识别,则可以忽略此選
- `--repo_dir dir``-r dir`存儲数据的存儲库目錄路
- `--clone_addr addr`被克隆的 URL,目前可以是 git/github/gitea/gitlab 的 http/https URL。例如:https://github.com/lunny/tango.git
- `--auth_username lunny`访问 `clone_addr` 的使用者名。
- `--auth_password <password>`访问 `clone_addr` 的密碼。
- `--auth_token <token>`访问 `clone_addr`人令牌。
- `--owner_name lunny`:如果非空,数据将存儲在具有所有者名稱的目錄中。
- `--repo_name tango`:如果非空,数据将存儲在具有存儲库名稱的目錄中。
- `--units <units>`:要移的项目,一或多个项目應以逗分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,表示所有项目
-
- `--git_service service`Git 服,可以是 `git``github``gitea``gitlab`。如果 `clone_addr` 可以被識別,則可以忽略此選
- `--repo_dir dir``-r dir`儲存資料的儲存庫目錄路
- `--clone_addr addr`被克隆的 URL,目前可以是 git/github/gitea/gitlab 的 http/https URL。例如:https://github.com/lunny/tango.git
- `--auth_username lunny`訪問 `clone_addr` 的使用者名
- `--auth_password <password>`訪問 `clone_addr` 的密碼。
- `--auth_token <token>`訪問 `clone_addr`人令牌。
- `--owner_name lunny`:如果非空,資料將儲存在具有所有者名稱的目錄中。
- `--repo_name tango`:如果非空,資料將儲存在具有儲存庫名稱的目錄中。
- `--units <units>`:要移的專案,一或多個專案應以逗分隔。允許的專案有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,表示所有專案
### restore-repo
`restore-repo` 硬碟目錄中還原存儲库数据
`restore-repo` 硬碟目錄中還原儲存庫資料
-
- `--repo_dir dir``-r dir`:還原数据的存儲库目錄路
- `--owner_name lunny`:還原目所有者名稱。
- `--repo_name tango`:還原目标存儲库名稱。
- `--units <units>`:要還原的项目,一或多个项目應以逗分隔。允许的项目有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,表示所有项目
-
- `--repo_dir dir``-r dir`:還原資料的儲存庫目錄路
- `--owner_name lunny`:還原目所有者名稱。
- `--repo_name tango`:還原目標儲存庫名稱。
- `--units <units>`:要還原的專案,一或多個專案應以逗分隔。允許的專案有 wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments。如果為空,表示所有專案
### actions generate-runner-token
生成一供 Runner 使用的新令牌,用于向服务器注册
生成一供 Runner 使用的新令牌,用於向伺服器註冊
-
- `--scope {owner}[/{repo}]``-s {owner}[/{repo}]`:限制 Runner 的范围,没有范围表示該 Runner 可用所有存放庫,但你也可以其限制為特定的存放庫或所有者。
-
- `--scope {owner}[/{repo}]``-s {owner}[/{repo}]`:限制 Runner 的範圍,沒有範圍表示該 Runner 可用所有存放庫,但你也可以其限制為特定的存放庫或所有者。
注册全局 Runner
註冊全域 Runner
```
gitea actions generate-runner-token
```
注册特定組織的 Runner,例如 `org`
註冊特定組織的 Runner,例如 `org`
```
gitea actions generate-runner-token -s org
```
注册特定存放庫的 Runner,例如 `username/test-repo`
註冊特定存放庫的 Runner,例如 `username/test-repo`
```
gitea actions generate-runner-token -s username/test-repo
@@ -7,77 +7,77 @@ aliases:
- /zh-tw/customizing-gitea
---
# 自定义 Gitea 配置
# 自 Gitea 設定
Gitea 引用 `custom` 目錄中的自定义配置文件来覆盖配置、模板等默认配置
Gitea 引用 `custom` 目錄中的自訂設定文件來覆蓋設定、模板等預設設定
如果二進制部署 Gitea 所有默认路径都将相對於該 gitea 二進制文件;如果从发行版安裝,可能会将这些路修改為 Linux 文件系统标准。Gitea
将会自动建立包括 `custom/`的必要應用目錄,應用本身的配置存放在
`custom/conf/app.ini` 中。在行版中可能`/etc/gitea/` 的形式為 `custom` 设置一个符号链接,查看配置详情請移步:
如果二進制部署 Gitea 所有預設路徑都將相對於該 gitea 二進制文件;如果從發行版安裝,可能會將這些路修改為 Linux 文件系統標準。Gitea
將會自動建立包括 `custom/`的必要應用目錄,應用本身的設定存放在
`custom/conf/app.ini` 中。在行版中可能`/etc/gitea/` 的形式為 `custom` 設定一個符號鏈接,查看設定詳情請移步:
- [快速忘單](../administration/config-cheat-sheet.md)
- [完整配置清單](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
- [快速忘單](../administration/config-cheat-sheet.md)
- [完整設定清單](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
如果您在 binary 同目錄下無法找到 `custom` 文件,請查您的 `GITEA_CUSTOM`
环境变量配置 因為它可能被配置到了其他地方(可能被一些启动脚本设置指定了目錄)。
如果您在 binary 同目錄下無法找到 `custom` 文件,請查您的 `GITEA_CUSTOM`
環境變量設定 因為它可能被設定到了其他地方(可能被一些啟動腳本設定指定了目錄)。
- [环境变量清單](../administration/environment-variables.md)
- [環境變量清單](../administration/environment-variables.md)
**注:** 必須完全重 Gitea 以使配置生效。
**注:** 必須完全重 Gitea 以使設定生效。
## 使用自定义 /robots.txt
## 使用自 /robots.txt
[想要展示的](http://www.robotstxt.org/) 存放在 `custom` 目錄中的
`robots.txt` 文件来让 Gitea 使用自定义`/robots.txt` 默认:空 404)。
[想要展示的](http://www.robotstxt.org/) 存放在 `custom` 目錄中的
`robots.txt` 文件來讓 Gitea 使用自`/robots.txt` 預設:空 404)。
## 使用自定义的公共文件
## 使用自的公共文件
将自定义的公共文件(比如面和片)作為 webroot 放在 `custom/public/`来让 Gitea 提供些自定义内容(符号链接将被追)。
將自訂的公共文件(比如面和片)作為 webroot 放在 `custom/public/`來讓 Gitea 提供些自訂內容(符號鏈接將被追)。
举例说明:`image.png` 存放在 `custom/public/assets/`中,那它可以通過链接 http://gitea.domain.tld/assets/image.png 访问
舉例說明:`image.png` 存放在 `custom/public/assets/`中,那它可以透過鏈接 http://gitea.domain.tld/assets/image.png 訪問
## 修改默认头
## 修改預設頭
以下目錄中的 png 片: `custom/public/assets/img/avatar\_default.png`
以下目錄中的 png 片: `custom/public/assets/img/avatar\_default.png`
## 自定义 Gitea
## 自 Gitea
您可以改 Gitea `custom/templates` 的每个單页面。您可以在 Gitea 源`templates` 目錄中找到用于覆盖的模板文件,應用将根据
`custom/templates` 目錄下的路径结构進行匹配和覆
您可以改 Gitea `custom/templates` 的每個單頁面。您可以在 Gitea 源`templates` 目錄中找到用於覆蓋的模板文件,應用將根據
`custom/templates` 目錄下的路徑結構進行匹配和覆
包含在 `{{``}}` 中的任何句都是 Gitea 的模板法,如果您不完全理解这些组件,不建议您对它们進行修改。
包含在 `{{``}}` 中的任何句都是 Gitea 的模板法,如果您不完全理解這些元件,不建議您對它們進行修改。
### 添加接和页签
### 添加接和頁籤
如果您只是想添加外的接到顶部导航栏或额外的選卡到存儲库视图,您可以将它们放在您 `custom/templates/custom/` 目錄下的 `extra_links.tmpl``extra_tabs.tmpl` 文件中。
如果您只是想添加外的接到頂部導航欄或額外的選卡到儲存庫視圖,您可以將它們放在您 `custom/templates/custom/` 目錄下的 `extra_links.tmpl``extra_tabs.tmpl` 文件中。
举例说明:假您需要在站放置一个静态的“关于”页面,您只需将該页面放在您的
"custom/public/"目錄下(比如 `custom/public/impressum.html`)並且将它与 `custom/templates/custom/extra_links.tmpl` 接起即可。
舉例說明:假您需要在站放置一個靜態的“關於”頁面,您只需將該頁面放在您的
"custom/public/"目錄下(比如 `custom/public/impressum.html`)並且將它與 `custom/templates/custom/extra_links.tmpl` 接起即可。
这个链接應使用一名為“item”的 class 匹配当前样式,您可以使用 `{{AppSubUrl}}` 来获取 base URL:
這個鏈接應使用一名為“item”的 class 匹配當前樣式,您可以使用 `{{AppSubUrl}}` 來獲取 base URL:
`<a class="item" href="{{AppSubUrl}}/assets/impressum.html">Impressum</a>`
同理,您可以将页签添加到 `extra_tabs.tmpl` 中,使用同的方式添加页签。它的具體式需要
`templates/repo/header.tmpl` 中已有的其他選卡的式匹配
同理,您可以將頁籤添加到 `extra_tabs.tmpl` 中,使用同的方式添加頁籤。它的具體式需要
`templates/repo/header.tmpl` 中已有的其他選卡的式匹配
([source in GitHub](https://github.com/go-gitea/gitea/blob/main/templates/repo/header.tmpl))
### 面的其他新增
### 面的其他新增
除了 `extra_links.tmpl``extra_tabs.tmpl`,您可以在您的 `custom/templates/custom/` 目錄中存放一些其他有用的模板,例如:
- `header.tmpl`,在 `<head>` 标记结束之前的模板,例如添加自定义 CSS 文件
- `body_outer_pre.tmpl`,在 `<body>` 标记开始处的模板
- `body_inner_pre.tmpl`,在顶部导航栏之前,但在主 container 部的模板,例如添加一 `<div class="full height">`
- `body_inner_post.tmpl`,在主 container 结束处的模板
- `header.tmpl`,在 `<head>` 標記結束之前的模板,例如添加自 CSS 文件
- `body_outer_pre.tmpl`,在 `<body>` 標記開始處的模板
- `body_inner_pre.tmpl`,在頂部導航欄之前,但在主 container 部的模板,例如添加一 `<div class="full height">`
- `body_inner_post.tmpl`,在主 container 結束處的模板
- `body_outer_post.tmpl`,在底部 `<footer>` 元素之前.
- `footer.tmpl`,在 `<body>` 標籤结束处的模板,可以在这里填写一些附加的 Javascript 本。
- `footer.tmpl`,在 `<body>` 標籤結束處的模板,可以在這裡填寫一些附加的 Javascript 本。
## 自定义 gitignoreslabels licenses locales 以及 readmes
## 自 gitignoreslabels licenses locales 以及 readmes
将自定义文件放在 `custom/options` 下相應子的文件中即可
將自訂文件放在 `custom/options` 下相應子的文件中即可
## 更改 Gitea 外
## 更改 Gitea 外
置主是“gitea-light”、“gitea-dark”和“gitea-auto”(自动适應操作系统设置)。
置主是“gitea-light”、“gitea-dark”和“gitea-auto”(自動適應操作系統設定)。
默认主题可以`app.ini` 的 [ui](../administration/config-cheat-sheet.md#界面) 部分中的 `DEFAULT_THEME` 進行更改。
預設主題可以`app.ini` 的 [ui](../administration/config-cheat-sheet.md) 部分中的 `DEFAULT_THEME` 進行更改。
@@ -7,17 +7,17 @@ aliases:
- /zh-tw/email-setup
---
# Email 设置
# Email 設定
Gitea 具有件功能,用于发送事务性邮件(例如注册确认邮件)。它可以配置為使用 Sendmail(或容的 MTA,例如 Postfix 和 msmtp)或直接使用 SMTP 服器。
Gitea 具有件功能,用於發送事務性郵件(例如註冊確認郵件)。它可以設定為使用 Sendmail(或容的 MTA,例如 Postfix 和 msmtp)或直接使用 SMTP 服器。
## 使用 Sendmail
使用 `sendmail` 命令作為邮件传输代理(mailer)。
使用 `sendmail` 命令作為郵件傳輸代理(mailer)。
注意:對於在官方 Gitea Docker 像中使用,請使用 SMTP 版本進行配置(請考下一)。
注意:對於在官方 Gitea Docker 像中使用,請使用 SMTP 版本進行設定(請考下一)。
注意:對於面向互联网的网站,請查您的 MTA 文檔以了解通過 TLS 发送邮件的明。同时设置 SPF、DMARC 和 DKIM DNS 记录,以使送的件被各个电子邮件提供商接受為合法件。
注意:對於面向互聯網的網站,請查您的 MTA 文件以瞭解通過 TLS 發送郵件的明。同時設定 SPF、DMARC 和 DKIM DNS 記錄,以使送的件被各個電子郵件提供商接受為合法件。
```ini title="app.ini"
[mailer]
@@ -25,12 +25,12 @@ ENABLED = true
FROM = [email protected]
PROTOCOL = sendmail
SENDMAIL_PATH = /usr/sbin/sendmail
SENDMAIL_ARGS = "--" ; 大多 "sendmail" 程序都接受選,使用 "--" 防止电子邮件地址被解為選
SENDMAIL_ARGS = "--" ; 大多 "sendmail" 程序都接受選,使用 "--" 防止電子郵件地址被解為選
```
## 使用 SMTP
直接使用 SMTP 服器作為中。如果您不想在例上设置 MTA,但在电子邮件提供商那有一帳戶,这个選项非常有用。
直接使用 SMTP 服器作為中。如果您不想在例上設定 MTA,但在電子郵件提供商那有一帳戶,這個選項非常有用。
```ini title="app.ini"
[mailer]
@@ -43,29 +43,29 @@ USER = [email protected]
PASSWD = `password`
```
Gitea 以使配置更改生效。
Gitea 以使設定更改生效。
发送测试邮件以驗證设置,請到 Gitea > 站管理 > 配置 > SMTP 邮件配置
發送測試郵件以驗證設定,請到 Gitea > 站管理 > 設定 > SMTP 郵件設定
所有選的完整列表,請查看[配置速查表](../administration/config-cheat-sheet.md)。
所有選的完整列表,請查看[設定速查表](../administration/config-cheat-sheet.md)。
請注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服器通信才支身份驗證。TLS 加密可以過以下方式進行:
請注意:只有在使用 TLS 或 `HOST=localhost` 加密 SMTP 服器通信才支身份驗證。TLS 加密可以過以下方式進行:
- 通過端口 587 的 STARTTLS(也稱為 Opportunistic TLS)。初始接是明文的,但如果服务器支持,则可以升為 TLS。
- 通過默认端口 465 的 SMTPS 接。接到服务器从一开始就使用 TLS。
- 使用 `PROTOCOL=smtps` 進行制的 SMTPS 接。(这两种方式都被稱為 Implicit TLS
是由 Go 内部库对 STRIPTLS 攻擊的保機制。
- 通過端口 587 的 STARTTLS(也稱為 Opportunistic TLS)。初始接是明文的,但如果伺服器支援,則可以升為 TLS。
- 通過預設端口 465 的 SMTPS 接。接到伺服器從一開始就使用 TLS。
- 使用 `PROTOCOL=smtps` 進行制的 SMTPS 接。(這兩種方式都被稱為 Implicit TLS
是由 Go 內部庫對 STRIPTLS 攻擊的保機制。
請注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推使用 Implicit TLS。
請注意,自 2018 年起,[RFC8314](https://tools.ietf.org/html/rfc8314#section-3) 推使用 Implicit TLS。
### Gmail
以下配置應該适用于 Gmail 的 SMTP 服器:
以下設定應該適用於 Gmail 的 SMTP 服器:
```ini title="app.ini"
[mailer]
ENABLED = true
HOST = smtp.gmail.com:465 ; 對於 Gitea >= 1.18.0除此行
HOST = smtp.gmail.com:465 ; 對於 Gitea >= 1.18.0除此行
SMTP_ADDR = smtp.gmail.com
SMTP_PORT = 465
FROM = [email protected]
@@ -74,4 +74,4 @@ PASSWD = `***`
PROTOCOL = smtps
```
請注意,您需要建立並使用一 [應用密碼](https://support.google.com/accounts/answer/185833?hl=en) 並在您的 Google 帳戶上用 2FA。您無法直接使用您的 Google 帳戶密碼。
請注意,您需要建立並使用一 [應用密碼](https://support.google.com/accounts/answer/185833?hl=en) 並在您的 Google 帳戶上用 2FA。您無法直接使用您的 Google 帳戶密碼。
@@ -7,43 +7,43 @@ aliases:
- /zh-tw/environment-variables
---
# 环境变量清單
# 環境變量清單
这里是用控制 Gitea 行為表現的的环境变量清單,您需要在執行如下 Gitea 启动命令前设置它们来确保配置生效:
這裡是用控制 Gitea 行為表現的的環境變量清單,您需要在執行如下 Gitea 啟動命令前設定它們來確保設定生效:
```
GITEA_CUSTOM=/home/gitea/custom ./gitea web
```
## Go 的配置
## Go 的設定
因為 Gitea 使用 Go 语言编写,因此它使用了一些相的 Go 的配置參數:
因為 Gitea 使用 Go 語言編寫,因此它使用了一些相的 Go 的設定參數:
- `GOOS`
- `GOARCH`
- [`GOPATH`](https://go.dev/cmd/go/#hdr-GOPATH_environment_variable)
您可以在[官方文](https://go.dev/cmd/go/#hdr-Environment_variables)中查阅这些配置參數的详细信息
您可以在[官方文](https://go.dev/cmd/go/#hdr-Environment_variables)中查閱這些設定參數的詳細資訊
## Gitea 的文件目錄
- `GITEA_WORK_DIR`:工作目錄的绝对路径
- `GITEA_CUSTOM`默认情况下 Gitea 使用默认目錄 `GITEA_WORK_DIR`/custom,您可以使用这个參數来配置 _custom_ 目錄
- `GOGS_WORK_DIR`废弃,請使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM`废弃,請使用 `GITEA_CUSTOM` 替代
- `GITEA_WORK_DIR`:工作目錄的絕對路徑
- `GITEA_CUSTOM`預設情況下 Gitea 使用預設目錄 `GITEA_WORK_DIR`/custom,您可以使用這個參數來設定 _custom_ 目錄
- `GOGS_WORK_DIR`廢棄,請使用 `GITEA_WORK_DIR` 替代
- `GOGS_CUSTOM`廢棄,請使用 `GITEA_CUSTOM` 替代
## 操作系统配置
## 操作系統設定
- `USER`Gitea 运行时使用的系使用者,它作為一些 repository 的访问地址的一部分
- `USERNAME` 如果没有配置 `USER` Gitea 使用 `USERNAME`
- `HOME`: 使用者的 home 目錄,在 Windows 中使用 `USERPROFILE` 环境变
- `USER`Gitea 運行時使用的系使用者,它作為一些 repository 的訪問地址的一部分
- `USERNAME` 如果沒有設定 `USER` Gitea 使用 `USERNAME`
- `HOME`: 使用者的 home 目錄,在 Windows 中使用 `USERPROFILE` 環境變
### 僅限 Windows 的配置
### 僅限 Windows 的設定
- `USERPROFILE` 使用者的主目錄,如果未配置则会使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用于访问 home 目錄的主驱动器路C
- `HOMEPATH`:在指定主驱动器下的 home 目錄相对路径
- `USERPROFILE` 使用者的主目錄,如果未設定則會使用 `HOMEDRIVE` + `HOMEPATH`
- `HOMEDRIVE`: 用於訪問 home 目錄的主驅動器路C
- `HOMEPATH`:在指定主驅動器下的 home 目錄相對路徑
## Miscellaneous
- `SKIP_MINWINSVC`:如果设置為 1,在 Windows 上不以 service 的形式行。
- `SKIP_MINWINSVC`:如果設定為 1,在 Windows 上不以 service 的形式行。
@@ -9,18 +9,18 @@ aliases:
# 外部渲染器
Gitea 通過外部二進制文件支持自定义文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要進行以下步
Gitea 通過外部二進制文件支援自訂文件渲染(例如 Jupyter notebooks、asciidoc 等),只需要進行以下步
- 安裝外部二進制文件
- 在您的 `app.ini` 文件中添加一些配置
- 重新启动 Gitea
- 在您的 `app.ini` 文件中添加一些設定
- 重新啟動 Gitea
此功能支持整个文件的渲染。如果您想要在 Markdown 中渲染代码块,您需要使用 JavaScript 進行一些操作。請参阅 [定义 Gitea 配置](../administration/customizing-gitea.md) 面上的一些例。
此功能支援整個文件的渲染。如果您想要在 Markdown 中渲染程式碼塊,您需要使用 JavaScript 進行一些操作。請參閱 [ Gitea 設定](../administration/customizing-gitea.md) 面上的一些例。
## 安裝外部二進制文件
為了通過外部二進制文件進行文件渲染,必須安裝它们的关联軟體包
如果您正在使用 Docker 像,您的 `Dockerfile` 應該包含以下容:
為了通過外部二進制文件進行文件渲染,必須安裝它們的關聯套件
如果您正在使用 Docker 像,您的 `Dockerfile` 應該包含以下容:
```docker
FROM docker.gitea.com/gitea:@dockerVersion@
@@ -36,16 +36,16 @@ RUN pipx install jupyter docutils --include-deps
# 在上面添加您需要安裝的任何其他 Python 軟體包
```
## `app.ini` 文件配置
## `app.ini` 文件設定
在您的自定义 `app.ini` 文件中為每外部渲染器添加一 `[markup.XXXXX]` 部分:
在您的自 `app.ini` 文件中為每外部渲染器添加一 `[markup.XXXXX]` 部分:
```ini
[markup.asciidoc]
ENABLED = true
FILE_EXTENSIONS = .adoc,.asciidoc
RENDER_COMMAND = "asciidoctor -s -a showtitle --out-file=- -"
; 入不是标准输入而是文件
; 入不是標準輸入而是文件
IS_INPUT_FILE = false
[markup.jupyter]
@@ -61,12 +61,12 @@ RENDER_COMMAND = "timeout 30s pandoc +RTS -M512M -RTS -f rst"
IS_INPUT_FILE = false
```
如果您的外部标记语言依赖于在生成的 HTML 元素上的额外类和属性,您可能需要用自定义的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作為我的 HTML 清理器。下面的例可以用于支持从 [`pandoc`](https://pandoc.org/) 出的服器端 [KaTeX](https://katex.org/) 渲染果。
如果您的外部標記語言依賴於在生成的 HTML 元素上的額外類和屬性,您可能需要用自的清理策略。Gitea 使用 [`bluemonday`](https://godoc.org/github.com/microcosm-cc/bluemonday) 包作為我的 HTML 清理器。下面的例可以用於支援從 [`pandoc`](https://pandoc.org/) 出的服器端 [KaTeX](https://katex.org/) 渲染果。
```ini
[markup.sanitizer.TeX]
; Pandoc 渲染 TeX 段落為有 "math" 的 <span> 元素,根上下文可能還有 "inline" 或 "display"
; - 請注意,这与我们的 Markdown 解析器中置的数学支持不同,者使用 <code> 元素。
; Pandoc 渲染 TeX 段落為有 "math" 的 <span> 元素,根上下文可能還有 "inline" 或 "display"
; - 請注意,這與我們的 Markdown 解析器中置的數學支持不同,者使用 <code> 元素。
ELEMENT = span
ALLOW_ATTR = class
REGEXP = ^\s*((math(\s+|$)|inline(\s+|$)|display(\s+|$)))+
@@ -77,19 +77,19 @@ FILE_EXTENSIONS = .md,.markdown
RENDER_COMMAND = pandoc -f markdown -t html --katex
```
您必須在每部分中定 `ELEMENT``ALLOW_ATTR`
您必須在每部分中定 `ELEMENT``ALLOW_ATTR`
要定义多个条目,請添加唯一的字母数字后缀(例如,`[markup.sanitizer.1]``[markup.sanitizer.something]`)。
要定義多個條目,請添加唯一的字母數字後綴(例如,`[markup.sanitizer.1]``[markup.sanitizer.something]`)。
要僅為特定的外部渲染器應用清理規則,它必須使用渲染器名稱,例如 `[markup.sanitizer.asciidoc.rule-1]``[markup.sanitizer.<renderer>.rule-1]`
要僅為特定的外部渲染器應用清理規則,它必須使用渲染器名稱,例如 `[markup.sanitizer.asciidoc.rule-1]``[markup.sanitizer.<renderer>.rule-1]`
**注意**:如果規則在渲染器 ini 部分之前定,或者名稱渲染器不匹配,它應用所有渲染器。
**注意**:如果規則在渲染器 ini 部分之前定,或者名稱渲染器不匹配,它應用所有渲染器。
完成配置更改,請重新启动 Gitea 以使更改生效。
完成設定更改,請重新啟動 Gitea 以使更改生效。
**注意**:在 Gitea 1.12 之前,存在一名為 `markup.sanitiser` 的單部分,其中的被重新定為多規則,但是,这种配置方法存在重大问题,需要通過多部分進行配置
**注意**:在 Gitea 1.12 之前,存在一名為 `markup.sanitiser` 的單部分,其中的被重新定為多規則,但是,這種設定方法存在重大問題,需要通過多部分進行設定
### 例:HTML
### 例:HTML
直接渲染 HTML 文件:
@@ -98,7 +98,7 @@ RENDER_COMMAND = pandoc -f markdown -t html --katex
ENABLED = true
FILE_EXTENSIONS = .html,.htm
RENDER_COMMAND = cat
; 入不是标准输入,而是文件
; 入不是標準輸入,而是文件
IS_INPUT_FILE = true
[markup.sanitizer.html.1]
@@ -110,13 +110,13 @@ ELEMENT = a
ALLOW_ATTR = class
```
請注意:此例中的配置将允许渲染 HTML 文件,並使用 `cat` 命令文件内容输出為 HTML。此外,配置中的两个清理規則将允许 `<div>``<a>` 元素使用 `class` 性。
請注意:此例中的設定將允許渲染 HTML 文件,並使用 `cat` 命令文件內容輸出為 HTML。此外,設定中的兩個清理規則將允許 `<div>``<a>` 元素使用 `class` 性。
在進行配置更改,請重新启动 Gitea 以使更改生效。
在進行設定更改,請重新啟動 Gitea 以使更改生效。
### 例:Office DOCX
### 例:Office DOCX
使用 [`pandoc`](https://pandoc.org/) 示 Office DOCX 文件:
使用 [`pandoc`](https://pandoc.org/) 示 Office DOCX 文件:
```ini
[markup.docx]
@@ -128,17 +128,17 @@ RENDER_COMMAND = "pandoc --from docx --to html --self-contained --template /path
ALLOW_DATA_URI_IMAGES = true
```
在此例中,配置将允许显示 Office DOCX 文件,並使用 `pandoc` 命令文件转换為 HTML 格式。同,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置`true`,允使用 Data URI 格式的片。
在此例中,設定將允許顯示 Office DOCX 文件,並使用 `pandoc` 命令文件轉換為 HTML 格式。同,清理規則中的 `ALLOW_DATA_URI_IMAGES` 設定`true`,允使用 Data URI 格式的片。
模板文件的容如下:
模板文件的容如下:
```
$body$
```
### 例:Jupyter Notebook
### 例:Jupyter Notebook
使用 [`nbconvert`](https://github.com/jupyter/nbconvert) 示 Jupyter Notebook 文件:
使用 [`nbconvert`](https://github.com/jupyter/nbconvert) 示 Jupyter Notebook 文件:
```ini
[markup.jupyter]
@@ -150,15 +150,15 @@ RENDER_COMMAND = "jupyter-nbconvert --stdin --stdout --to html --template basic"
ALLOW_DATA_URI_IMAGES = true
```
在此例中,配置将允许显示 Jupyter Notebook 文件,並使用 `nbconvert` 命令文件转换為 HTML 格式。同,清理規則中的 `ALLOW_DATA_URI_IMAGES` 设置`true`,允使用 Data URI 格式的片。
在此例中,設定將允許顯示 Jupyter Notebook 文件,並使用 `nbconvert` 命令文件轉換為 HTML 格式。同,清理規則中的 `ALLOW_DATA_URI_IMAGES` 設定`true`,允使用 Data URI 格式的片。
在進行配置更改,請重新启动 Gitea 以使更改生效。
在進行設定更改,請重新啟動 Gitea 以使更改生效。
## 自定义 CSS
## 自 CSS
`.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,並且由外部渲染器生成的 HTML 被包在一个带`markup``XXXXX` `<div>` 中。`markup` 提供了预定义的样式(如果 `XXXXX``markdown`使用 `markdown` )。否,您可以使用这些类来针对渲染的 HTML 容進行定制样式。
`.ini` 文件中,可以使用 `[markup.XXXXX]` 的格式指定外部渲染器,並且由外部渲染器生成的 HTML 被包在一個帶`markup``XXXXX` `<div>` 中。`markup` 提供了預定義的樣式(如果 `XXXXX``markdown`使用 `markdown` )。否,您可以使用這些類來針對渲染的 HTML 容進行定製樣式。
因此,您可以编写一些 CSS 式:
因此,您可以編寫一些 CSS 式:
```css
.markup.XXXXX html {
@@ -185,10 +185,10 @@ ALLOW_DATA_URI_IMAGES = true
}
```
您的式表添加到自定义目錄中,例如 `custom/public/assets/css/my-style-XXXXX.css`,並使用自定义的头文件 `custom/templates/custom/header.tmpl` 進行入:
您的式表添加到自目錄中,例如 `custom/public/assets/css/my-style-XXXXX.css`,並使用自訂的頭文件 `custom/templates/custom/header.tmpl` 進行入:
```html
<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/my-style-XXXXX.css" />
```
通過以上步,您可以将自定义的 CSS 式應用到特定的外部渲染器,使其具有所需的式效果。
通過以上步,您可以將自訂的 CSS 式應用到特定的外部渲染器,使其具有所需的式效果。
@@ -7,13 +7,13 @@ aliases:
- /zh-tw/fail2ban-setup
---
# 设置 Fail2ban
# 設定 Fail2ban
**Fail2ban 查客端登入日志,将多次登入失的客户端识别為攻擊者並在一段时间内阻止其访问服务。如果你的例是公的,这一点尤其重要。請管理员仔细设置 fail2ban错误的配置将导致防火阻止你访问自己的服器。**
**Fail2ban 查客端登入日誌,將多次登入失的客戶端識別為攻擊者並在一段時間內阻止其訪問服務。如果你的例是公的,這一點尤其重要。請管理員仔細設定 fail2ban錯誤的設定將導致防火阻止你訪問自己的服器。**
Gitea 在日文件 `log/gitea.log`记录登入失的 CLI、SSH 或 HTTP 客端 IP 地址,而你需要 Gitea 的日志输出模式从默认`console` 更改為 `file`表示将日志输出到文件,使得 fail2ban 可以定期掃描日志内容。
Gitea 在日文件 `log/gitea.log`記錄登入失的 CLI、SSH 或 HTTP 客端 IP 地址,而你需要 Gitea 的日誌輸出模式從預設`console` 更改為 `file`表示將日誌輸出到文件,使得 fail2ban 可以定期掃描日誌內容。
使用者的身份驗證失败时,日志中会记录此类信息
使用者的身份驗證失敗時,日誌中會記錄此類資訊
```log
2018/04/26 18:15:54 [I] Failed authentication attempt for user from xxx.xxx.xxx.xxx
@@ -23,9 +23,9 @@ Gitea 会在日志文件 `log/gitea.log` 中记录登入失败的 CLI、SSH 或
2020/10/15 16:08:44 [E] invalid credentials from xxx.xxx.xxx.xxx
```
## 配置規則
## 設定規則
添加日志過滤器規則到配置文件 `/etc/fail2ban/filter.d/gitea.conf`:
添加日誌過濾器規則到設定文件 `/etc/fail2ban/filter.d/gitea.conf`:
```ini
[Definition]
@@ -33,7 +33,7 @@ failregex = .*(Failed authentication attempt|invalid credentials|Attempted acce
ignoreregex =
```
添加监狱規則到配置文件 `/etc/fail2ban/jail.d/gitea.conf`:
添加監獄規則到設定文件 `/etc/fail2ban/jail.d/gitea.conf`:
```ini
[gitea]
@@ -46,9 +46,9 @@ bantime = 900
action = iptables-allports
```
如果你的 Gitea 实例运行在 Docker 容器中,並且直接容器端口暴露到外部网络
你還需要添加 `chain="FORWARD"`监狱規則配置文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
應 Docker 的网络转发規則。但如果你在容器的宿主上使用 Nginx 反向代理接到 Gitea 無需这样配置
如果你的 Gitea 實例運行在 Docker 容器中,並且直接容器端口暴露到外部網路
你還需要添加 `chain="FORWARD"`監獄規則設定文件 `/etc/fail2ban/jail.d/gitea-docker.conf`
應 Docker 的網路轉發規則。但如果你在容器的宿主上使用 Nginx 反向代理接到 Gitea 無需這樣設定
```ini
[gitea-docker]
@@ -61,26 +61,26 @@ bantime = 900
action = iptables-allports[chain="FORWARD"]
```
后,运`systemctl restart fail2ban` 即可應用更改。現在,你可以使用 `systemctl status fail2ban` 查 fail2ban 运行状态
後,運`systemctl restart fail2ban` 即可應用更改。現在,你可以使用 `systemctl status fail2ban` 查 fail2ban 運行狀態
上述規則定客端在 1 小时内,如果登入失的次数达到 10 次,通過 iptables 定該客端 IP 地址 15 分
上述規則定客端在 1 小時內,如果登入失的次數達到 10 次,通過 iptables 定該客端 IP 地址 15 分
## 设置反向代理
## 設定反向代理
如果你使用 Nginx 反向代理到 Gitea 例,你還需要设置 Nginx 的 HTTP 部值 `X-Real-IP` 将真实的客端 IP 地址传递给 Gitea。否 Gitea 程序会将客户端地址错误解析為反向代理服器的地址,例如回环地址 `127.0.0.1`
如果你使用 Nginx 反向代理到 Gitea 例,你還需要設定 Nginx 的 HTTP 部值 `X-Real-IP` 將真實的客端 IP 地址傳遞給 Gitea。否 Gitea 程式會將客戶端地址錯誤解析為反向代理服器的地址,例如迴環地址 `127.0.0.1`
```
proxy_set_header X-Real-IP $remote_addr;
```
外注意,在 Gitea 的配置文件 `app.ini` 中存在下列默认值:
外注意,在 Gitea 的設定文件 `app.ini` 中存在下列預設值:
```
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = 127.0.0.0/8,::1/128
```
`REVERSE_PROXY_LIMIT` 限制反向代理服务器的层数,设置`0` 表示不使用这些标头
`REVERSE_PROXY_TRUSTED_PROXIES` 表示受信任的反向代理服务器网络地址,
過該网络地址转发来的流量会经過解析 `X-Real-IP` 部得到真实客户端地址。
考 [configuration cheat sheet](../administration/config-cheat-sheet.md#安全性)
`REVERSE_PROXY_LIMIT` 限制反向代理伺服器的層數,設定`0` 表示不使用這些標頭
`REVERSE_PROXY_TRUSTED_PROXIES` 表示受信任的反向代理伺服器網路地址,
過該網路地址轉發來的流量會經過解析 `X-Real-IP` 部得到真實客戶端地址。
考 [configuration cheat sheet](../administration/config-cheat-sheet.md)
@@ -7,18 +7,18 @@ aliases:
- /zh-tw/git-lfs-setup
---
# Git LFS 设置
# Git LFS 設定
要使用 Gitea 置的 LFS 支,您需要更新 `app.ini` 文件:
要使用 Gitea 置的 LFS 支,您需要更新 `app.ini` 文件:
```ini
[server]
; 用 git-lfs 支持。true 或 false,默為 false。
; 用 git-lfs 支持。true 或 false,默為 false。
LFS_START_SERVER = true
[lfs]
; 存放 LFS 文件的路,默為 data/lfs。
; 存放 LFS 文件的路,默為 data/lfs。
PATH = /home/gitea/data/lfs
```
**注意**LFS 服器支需要服器上安裝 Git v2.1.2 以上版本。
**注意**LFS 服器支需要服器上安裝 Git v2.1.2 以上版本。
@@ -5,16 +5,16 @@ sidebar_position: 12
---
# HTTPS配置
# HTTPS設定
## 使用内置服务
## 使用內置伺服
用HTTPS之前,保您有有效的SSL/TLS证书
议在测试和评估情下使用自签名证书,請`gitea cert --host [HOST]` 以生成自签名证书
用HTTPS之前,保您有有效的SSL/TLS證書
議在測試和評估情下使用自簽名證書,請`gitea cert --host [HOST]` 以生成自簽名證書
如果您在服器上使用阿帕奇(Apache)或Nginx,建议参考 [反向代理指南](reverse-proxies.md)。
如果您在服器上使用阿帕奇(Apache)或Nginx,建議參考 [反向代理指南](reverse-proxies.md)。
要使用Gitea置HTTPS支,您必須编辑`app.ini`文件。
要使用Gitea置HTTPS支,您必須編輯`app.ini`文件。
```ini
[server]
@@ -25,13 +25,13 @@ CERT_FILE = cert.pem
KEY_FILE = key.pem
```
請注意,如果您的证书由第三方证书颁发机构签名(即不是自名的), cert.pem 應包含证书链。服务器证书必須是 cert.pem 中的第一个条目,跟中介(如果有)。不必包含根证书,因為接客端必須已经拥有根证书才能建立信任关系。要了解有关配置值的更多信息,請查看 [配置备忘單](../administration/config-cheat-sheet#server-server)。
請注意,如果您的證書由第三方證書頒發機構簽名(即不是自名的), cert.pem 應包含證書鏈。伺服器證書必須是 cert.pem 中的第一個條目,跟中介(如果有)。不必包含根證書,因為接客端必須已經擁有根證書才能建立信任關係。要了解有關設定值的更多資訊,請查看 [設定備忘單](../administration/config-cheat-sheet.md)。
對於“CERT_FILE”或“KEY_FILE”字段,当文件路是相对路径时,文件路相對於“GITEA_CUSTOM”环境变量。它也可以是绝对路径
對於“CERT_FILE”或“KEY_FILE”欄位,當文件路是相對路徑時,文件路相對於“GITEA_CUSTOM”環境變量。它也可以是絕對路徑
### 设置HTTP重定向
### 設定HTTP重定向
Gitea服器僅支持监听一个端口;要重定向HTTP請求致HTTPS端口,您需要用HTTP重定向服
Gitea服器僅支援監聽一個端口;要重定向HTTP請求致HTTPS端口,您需要用HTTP重定向服
```ini
[server]
@@ -40,13 +40,13 @@ REDIRECT_OTHER_PORT = true
PORT_TO_REDIRECT = 3080
```
如果您使用Docker保端口已配置`docker-compose.yml` 文件
如果您使用Docker保端口已設定`docker-compose.yml` 文件
## 使用 ACME (默认: Let's Encrypt)
## 使用 ACME (預設: Let's Encrypt)
[ACME](https://tools.ietf.org/html/rfc8555) 是一种证书颁发机构标准协议,允您自請求和续订 SSL/TLS 证书。[Let`s Encrypt](https://letsencrypt.org/) 是使用此标准的免费公开信任的证书颁发机构服务器。僅施“HTTP-01”和“TLS-ALPN-01”挑。為了使 ACME 质询通過並驗證您的域所有,“80”端口(“HTTP-01”)或“443”端口(“TLS-ALPN-01”)上 gitea 域的外部流量必須由 gitea 例提供服。可能需要设置 [HTTP 重定向](#设置http重定向) 和端口转发才能正路由外部流量。否,到端口“80”的正常流量将自动重定向到 HTTPS。**您必須同意**ACME提供商的服务条款(默认為Let's Encrypt的 [务条](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
[ACME](https://tools.ietf.org/html/rfc8555) 是一種證書頒發機構標準協議,允您自請求和續訂 SSL/TLS 證書。[Let`s Encrypt](https://letsencrypt.org/) 是使用此標準的免費公開信任的證書頒發機構伺服器。僅施“HTTP-01”和“TLS-ALPN-01”挑。為了使 ACME 質詢通過並驗證您的域所有,“80”端口(“HTTP-01”)或“443”端口(“TLS-ALPN-01”)上 gitea 域的外部流量必須由 gitea 例提供服。可能需要設定 [HTTP 重定向](#設定http重定向) 和端口轉發才能正路由外部流量。否,到端口“80”的正常流量將自動重定向到 HTTPS。**您必須同意**ACME提供商的服務條款(預設為Let's Encrypt的 [務條](https://letsencrypt.org/documents/LE-SA-v1.2-2017年11月15日.pdf)。
使用默认 Let's Encrypt 的最小配置如下:
使用預設 Let's Encrypt 的最小設定如下:
```ini
[server]
@@ -59,7 +59,7 @@ ACME_DIRECTORY=https
ACME_EMAIL=[email protected]
```
小型配置請使用 [smallstep CA](https://github.com/smallstep/certificates), 點擊 [](https://smallstep.com/docs/tutorials/acme-challenge) 解更多信息
小型設定請使用 [smallstep CA](https://github.com/smallstep/certificates), 點擊 [](https://smallstep.com/docs/tutorials/acme-challenge) 解更多資訊
```ini
[server]
@@ -74,16 +74,16 @@ ACME_DIRECTORY=https
ACME_EMAIL=[email protected]
```
要了解关于配置, 請访问 [配置备忘單](../administration/config-cheat-sheet.md#server-server)取更多信息
要了解關於設定, 請前往 [設定備忘單](../administration/config-cheat-sheet.md)取更多資訊
## 使用反向代理服
## 使用反向代理服器
按照 [reverse proxy guide](reverse-proxies.md) 的規則设置你的反向代理服
按照 [reverse proxy guide](reverse-proxies.md) 的規則設定你的反向代理服器
,按照下面的向导启用 HTTPS
,按照下面的嚮導啟用 HTTPS
- [nginx](https://nginx.org/en/docs/http/configuring_https_servers.html)
- [apache2/httpd](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
- [caddy](https://caddyserver.com/docs/tls)
注意:僅在代理层启用 HTTPS 被稱為 [TLS 止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服器接受入的 TLS 接,解密容,然后将現在未加密的内容传递给 Gitea。只要代理和 Gitea 例在同一台计算机上或在私有网络中的不同计算机上(代理暴露外部网络),通常是可以接受的。如果您的 Gitea 实例与代理隔在公共网络上,或者如果您想要全端到端的加密,您還可以直接在 Gitea 中 [启用内置服务器的 HTTPS 支](#使用内置服务),並将连接转发到 HTTPS 上。
注意:僅在代理層啟用 HTTPS 被稱為 [TLS 止代理](https://en.wikipedia.org/wiki/TLS_termination_proxy)。代理服器接受入的 TLS 接,解密容,然後將現在未加密的內容傳遞給 Gitea。只要代理和 Gitea 例在同一臺計算機上或在私有網路中的不同計算機上(代理暴露外部網路),通常是可以接受的。如果您的 Gitea 實例與代理隔在公共網路上,或者如果您想要全端到端的加密,您還可以直接在 Gitea 中 [啟用內置伺服器的 HTTPS 支](#使用內置伺服),並將連接轉發到 HTTPS 上。
@@ -6,44 +6,44 @@ aliases:
- /zh-tw/logging-configuration
---
# 日志配置
# 日誌設定
Gitea 的日志配置主要由以下三類型的组件组成:
Gitea 的日誌設定主要由以下三類型的元件組成:
- `[log]` 部分用一般配置
- `[log.<mode-name>]` 部分用于配置不同的日志输出方式,也稱為 "writer mode",模式名稱同也作為 "writer name"
- `[log]` 部分還可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日志记录器的配置
- `[log]` 部分用一般設定
- `[log.<mode-name>]` 部分用於設定不同的日誌輸出方式,也稱為 "writer mode",模式名稱同也作為 "writer name"
- `[log]` 部分還可以包含遵循 `logger.<logger-name>.<CONFIG-KEY>` 模式的子日誌記錄器的設定
默认情况下,已有一完全功能的日志输出,因此不需要重新定
預設情況下,已有一完全功能的日誌輸出,因此不需要重新定
## 收集日志以获取帮
## 收集日誌以獲取幫
要收集日志以获取帮助和报告问题,請参阅 [需要](help/support.md)。
要收集日誌以獲取幫助和報告問題,請參閱 [需要](help/support.md)。
## `[log]` 部分
在 Gitea 中,日志设施的配置`[log]` 部分及其子部分。
在 Gitea 中,日誌設施的設定`[log]` 部分及其子部分。
顶层`[log]` 部分,可以放置以下配置项
頂層`[log]` 部分,可以放置以下設定項
- `ROOT_PATH`:(默认值:**%(GITEA_WORK_DIR)/log**):日文件的基本路
- `MODE`:(默认值:**console**):要用于默认日志记录器的日志输出列表。
- `LEVEL`:(默认值:**Info**):要持久化的最重的日事件,不分大小。可能的值為:`Trace``Debug``Info``Warn``Error``Fatal`
- `STACKTRACE_LEVEL`:(默认值:**None**):對於此及更重的事件,将在记录时打印堆栈跟踪
- `ROOT_PATH`:(預設值:**%(GITEA_WORK_DIR)/log**):日文件的基本路
- `MODE`:(預設值:**console**):要用於預設日誌記錄器的日誌輸出列表。
- `LEVEL`:(預設值:**Info**):要持久化的最重的日事件,不分大小。可能的值為:`Trace``Debug``Info``Warn``Error``Fatal`
- `STACKTRACE_LEVEL`:(預設值:**None**):對於此及更重的事件,將在記錄時打印堆棧跟蹤
它還可以包含以下子日志记录器:
它還可以包含以下子日誌記錄器:
- `logger.router.MODE`:(默认值:**,**):用路由器日志记录器的日志输出列表。
- `logger.access.MODE`:(默认值:**_empty_**):用于访问日志记录器的日志输出列表。默认情况下,访问日志记录器被禁用。
- `logger.xorm.MODE`:(默认值:**,**):用 XORM 日志记录器的日志输出列表。
- `logger.router.MODE`:(預設值:**,**):用路由器日誌記錄器的日誌輸出列表。
- `logger.access.MODE`:(預設值:**_empty_**):用於訪問日誌記錄器的日誌輸出列表。預設情況下,訪問日誌記錄器被禁用。
- `logger.xorm.MODE`:(預設值:**,**):用 XORM 日誌記錄器的日誌輸出列表。
子日志记录器的模式设置為逗`,`)表示使用默认的全 `MODE`
子日誌記錄器的模式設定為逗`,`)表示使用預設的全 `MODE`
## 快速
## 快速
### 默认(空)配置
### 預設(空)設定
配置等同于默认配置
設定等同於預設設定
```ini
[log]
@@ -55,7 +55,7 @@ logger.router.MODE = ,
logger.xorm.MODE = ,
logger.access.MODE =
; 是“控制”模式的配置選(由上面的 MODE=console 使用)
; 是“控制”模式的配置選(由上面的 MODE=console 使用)
[log.console]
MODE = console
FLAGS = stdflags
@@ -63,13 +63,13 @@ PREFIX =
COLORIZE = true
```
等同于将所有日志发送到控制,並将默认的 Golang 日志也发送到控制台日志中。
等同於將所有日誌發送到控制,並將預設的 Golang 日誌也發送到控制檯日誌中。
只是一个示例,默认情况下不需要将其写入配置文件中。
只是一個範例,預設情況下不需要將其寫入設定文件中。
### 禁用路由日志並将一些访问日志记录到文件中
### 禁用路由日誌並將一些訪問日誌記錄到文件中
禁用路由日志,将访问日志>=Warn记录`access.log` 中:
禁用路由日誌,將訪問日誌>=Warn記錄`access.log` 中:
```ini
[log]
@@ -82,16 +82,16 @@ LEVEL = Warn
FILE_NAME = access.log
```
### 為不同的模式设置不同的日志级别
### 為不同的模式設定不同的日誌級別
将默认日志>=Warn记录`gitea.log` 中,将错误日志记录`file-error.log` 中:
將預設日誌>=Warn記錄`gitea.log` 中,將錯誤日誌記錄`file-error.log` 中:
```ini
[log]
LEVEL = Warn
MODE = file, file-error
; 默认情况下,"file" 模式会将日志记录到 %(log.ROOT_PATH)/gitea.log,因此我不需要置它
; 默認情況下,"file" 模式會將日誌記錄到 %(log.ROOT_PATH)/gitea.log,因此我不需要置它
; [log.file]
[log.file-error]
@@ -99,165 +99,165 @@ LEVEL = Error
FILE_NAME = file-error.log
```
## 日志输出(模式和入器)
## 日誌輸出(模式和入器)
Gitea 提供以下日志写入器:
Gitea 提供以下日誌寫入器:
- `console` - 出日`stdout`(或 `stderr`,如果已在配置中设置
- `file` - 出日到文件
- `conn` - 出日到套接字(网络或 Unix 套接字)
- `console` - 出日`stdout`(或 `stderr`,如果已在設定中設定
- `file` - 出日到文件
- `conn` - 出日到套接字(網路或 Unix 套接字)
### 公共配置
### 公共設定
某些配置适用于所有日志输出模式:
某些設定適用於所有日誌輸出模式:
- `MODE` 是日志输出写入器的模式。它将默认為 ini 部分的模式名稱。因此,`[log.console]` 将默认`MODE = console`
- `LEVEL` 是此输出将记录的最低日志级别
- `STACKTRACE_LEVEL` 是此输出将打印堆栈跟踪的最低日志级别
- `COLORIZE` 對於 `console`默认`true`,否则默认`false`
- `MODE` 是日誌輸出寫入器的模式。它將預設為 ini 部分的模式名稱。因此,`[log.console]` 將預設`MODE = console`
- `LEVEL` 是此輸出將記錄的最低日誌級別
- `STACKTRACE_LEVEL` 是此輸出將打印堆棧跟蹤的最低日誌級別
- `COLORIZE` 對於 `console`預設`true`,否則預設`false`
#### `EXPRESSION`
`EXPRESSION` 表示日事件必須匹配才能被输出写入器记录的正则表达式。
消息(去除色)或 `longfilename:linenumber:functionname` 必須匹配其中之一。
注意:整消息或字符串不需要完全匹配。
`EXPRESSION` 表示日事件必須匹配才能被輸出寫入器記錄的正則表達式。
消息(去除色)或 `longfilename:linenumber:functionname` 必須匹配其中之一。
注意:整消息或字符串不需要完全匹配。
請注意,此表达式将在写入器的 goroutine 中行,而不是在日事件的 goroutine 中行。
請注意,此表達式將在寫入器的 goroutine 中行,而不是在日事件的 goroutine 中行。
#### `FLAGS`
`FLAGS` 表示在每消息之前打印的前置日上下文信息
它是一个逗号分隔的字符串集。值的序無关紧要。
`FLAGS` 表示在每消息之前打印的前置日上下文資訊
它是一個逗號分隔的字符串集。值的序無關緊要。
默认值為 `stdflags`= `date,time,medfile,shortfuncname,levelinitial`)。
預設值為 `stdflags`= `date,time,medfile,shortfuncname,levelinitial`)。
可能的值為:
- `none``,` - 無标志
- `date` - 当地时区的日期:`2009/01/23`
- `time` - 当地时区的时间`01:23:23`
- `microseconds` - 微秒精度:`01:23:23.123123`。假定有时间
- `longfile` - 完整的文件名和行`/a/b/c/d.go:23`
- `shortfile` - 文件名的最后一个部分和行`d.go:23`
- `funcname` - 用者的函名:`runtime.Caller()`
- `shortfuncname` - 函名的最一部分。覆 `funcname`
- `utc` - 如果设置了日期或时间,则使用 UTC 而不是本地时区
- `levelinitial` - 提供的级别的初始字符,放在方括号内,例如 `[I]` 表示 info。
- `level` - 在方括号内的级别,例如 `[INFO]`
- `none``,` - 無標誌
- `date` - 當地時區的日期:`2009/01/23`
- `time` - 當地時區的時間`01:23:23`
- `microseconds` - 微秒精度:`01:23:23.123123`。假定有時間
- `longfile` - 完整的文件名和行`/a/b/c/d.go:23`
- `shortfile` - 文件名的最後一個部分和行`d.go:23`
- `funcname` - 調用者的函名:`runtime.Caller()`
- `shortfuncname` - 函名的最一部分。覆 `funcname`
- `utc` - 如果設定了日期或時間,則使用 UTC 而不是本地時區
- `levelinitial` - 提供的級別的初始字符,放在方括號內,例如 `[I]` 表示 info。
- `level` - 在方括號內的級別,例如 `[INFO]`
- `gopid` - 上下文的 Goroutine-PID。
- `medfile` - 文件名的最 20 字符 - 相当于 `shortfile,longfile`
- `stdflags` - 相当于 `date,time,medfile,shortfuncname,levelinitial`
- `medfile` - 文件名的最 20 字符 - 相當於 `shortfile,longfile`
- `stdflags` - 相當於 `date,time,medfile,shortfuncname,levelinitial`
### Console 模式
在此模式下,日志记录器将将日志消息转发到 Gitea 進程附加的 stdout 和 stderr 流。
在此模式下,日誌記錄器將將日誌消息轉發到 Gitea 進程附加的 stdout 和 stderr 流。
對於 console 模式的日志记录器,如果不在 Windows 上,或者 Windows 端可以设置為 ANSI 模式,或者是 cygwin 或 Msys 管道, `COLORIZE` 默认`true`
對於 console 模式的日誌記錄器,如果不在 Windows 上,或者 Windows 端可以設定為 ANSI 模式,或者是 cygwin 或 Msys 管道, `COLORIZE` 預設`true`
设置
設定
- `STDERR`**false**:日志记录器是否應将日志打印到 `stderr` 而不是 `stdout`
- `STDERR`**false**:日誌記錄器是否應將日誌打印到 `stderr` 而不是 `stdout`
### File 模式
在此模式下,日志记录器将将日志消息保存到文件中。
在此模式下,日誌記錄器將將日誌消息保存到文件中。
设置
設定
- `FILE_NAME`:要将日志事件入的文件,相對於 `ROOT_PATH`默认`%(ROOT_PATH)/gitea.log`常情况:访问日志默认`%(ROOT_PATH)/access.log`
- `MAX_SIZE_SHIFT`**28**:單文件的最大大小位移。28 表示 256Mb。详细信息见下文。
- `LOG_ROTATE` **true**:是否轮转日志文件。
- `DAILY_ROTATE`**true**:是否每天旋转日志
- `MAX_DAYS`**7**:在此天数之后删除旋的日文件。
- `COMPRESS`**true**默认情况下是否使用 gzip 压缩旧的日文件。
- `COMPRESSION_LEVEL`**-1**压缩级别。详细信息见下文。
- `FILE_NAME`:要將日誌事件入的文件,相對於 `ROOT_PATH`預設`%(ROOT_PATH)/gitea.log`常情況:訪問日誌預設`%(ROOT_PATH)/access.log`
- `MAX_SIZE_SHIFT`**28**:單文件的最大大小位移。28 表示 256Mb。詳細資訊見下文。
- `LOG_ROTATE` **true**:是否輪轉日誌文件。
- `DAILY_ROTATE`**true**:是否每天旋轉日誌
- `MAX_DAYS`**7**:在此天數之後刪除旋的日文件。
- `COMPRESS`**true**預設情況下是否使用 gzip 壓縮舊的日文件。
- `COMPRESSION_LEVEL`**-1**壓縮級別。詳細資訊見下文。
`MAX_SIZE_SHIFT` 通過将给定次左移 1 (`1 << x`) 来定义文件的最大大小。
在 v1.17.3 版本时的确切行為可以在[这里](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`MAX_SIZE_SHIFT` 通過將給定次左移 1 (`1 << x`) 來定義文件的最大大小。
在 v1.17.3 版本時的確切行為可以在[這裡](https://github.com/go-gitea/gitea/blob/v1.17.3/modules/setting/log.go#L185)中查看。
`COMPRESSION_LEVEL` 的有用值范围从 1 到(包括)9,其中高的字表示更好的压缩
請注意,更好的压缩可能会带来更高的源使用。
必須在前面加上 `-`
`COMPRESSION_LEVEL` 的有用值範圍從 1 到(包括)9,其中高的字表示更好的壓縮
請注意,更好的壓縮可能會帶來更高的源使用。
必須在前面加上 `-`
### Conn 模式
在此模式下,日志记录器将通過网络套接字送日消息。
在此模式下,日誌記錄器將通過網路套接字送日消息。
设置
設定
- `ADDR`**:7020**设置要连接的地址。
- `PROTOCOL`**tcp**设置协议,可以是 "tcp"、"unix" 或 "udp"。
- `RECONNECT`**false**:在连接丢失时尝试重新接。
- `RECONNECT_ON_MSG`**false**:為每消息重新接主
- `ADDR`**:7020**設定要連接的地址。
- `PROTOCOL`**tcp**設定協議,可以是 "tcp"、"unix" 或 "udp"。
- `RECONNECT`**false**:在連接丟失時嘗試重新接。
- `RECONNECT_ON_MSG`**false**:為每消息重新接主
### "Router" 日志记录
### "Router" 日誌記錄
Gitea 的路由理程工作Router 日志记录器记录以下消息類型:
Gitea 的路由理程工作Router 日誌記錄器記錄以下消息類型:
- `started` 消息以 TRACE 级别记录
- `polling`/`completed` 路由以 INFO 级别记录。异常情"/assets" 静态资源請求也以 TRACE 级别记录
- `slow` 路由以 WARN 级别记录
- `failed` 路由以 WARN 级别记录
- `started` 消息以 TRACE 級別記錄
- `polling`/`completed` 路由以 INFO 級別記錄。異常情"/assets" 靜態資源請求也以 TRACE 級別記錄
- `slow` 路由以 WARN 級別記錄
- `failed` 路由以 WARN 級別記錄
### "XORM" 日志记录
### "XORM" 日誌記錄
為了使 XORM 出 SQL 日,還應 `[database]` 部分中的 `LOG_SQL` 设置`true`
為了使 XORM 出 SQL 日,還應 `[database]` 部分中的 `LOG_SQL` 設定`true`
### "Access" 日志记录
### "Access" 日誌記錄
"Access" 日志记录器是自 Gitea 1.9 版本以的新日志记录器。它提供了符合 NCSA Common Log 标准的日格式。然它具有高度可配置性,但在更改其模板时應谨慎。此日志记录器的主要好是,Gitea 現在可以使用标准日志格式记录访问日志,因此可以使用标准工具進行分析。
"Access" 日誌記錄器是自 Gitea 1.9 版本以的新日誌記錄器。它提供了符合 NCSA Common Log 標準的日格式。然它具有高度可設定性,但在更改其模板時應謹慎。此日誌記錄器的主要好是,Gitea 現在可以使用標準日誌格式記錄訪問日誌,因此可以使用標準工具進行分析。
您可以過使用 `logger.access.MODE = ...` 来启用此日志记录器。
您可以過使用 `logger.access.MODE = ...` 來啟用此日誌記錄器。
如果需要,可以過更改 `ACCESS_LOG_TEMPLATE` 的值更改 "Access" 日志记录器的格式。
如果需要,可以過更改 `ACCESS_LOG_TEMPLATE` 的值更改 "Access" 日誌記錄器的格式。
請注意,访问日志记录器将`INFO` 级别记录,将此日志记录器的 `LEVEL` 设置`WARN` 或更高级别将导致不记录访问日志
請注意,訪問日誌記錄器將`INFO` 級別記錄,將此日誌記錄器的 `LEVEL` 設定`WARN` 或更高級別將導致不記錄訪問日誌
#### ACCESS_LOG_TEMPLATE
此值表示一 Go 模板。其默认值為
此值表示一 Go 模板。其預設值為
```tmpl
{{.Ctx.RemoteHost}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.URL.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}" "{{.Ctx.Req.UserAgent}}"`
```
模板接收以下選
模板接收以下選
- `Ctx``context.Context`
- `Identity``SignedUserName`,如果使用者未登入,為 "-"
- `Start` 是請求的开始时间
- `Identity``SignedUserName`,如果使用者未登入,為 "-"
- `Start` 是請求的開始時間
- `ResponseWriter``http.ResponseWriter`
更改此模板必須小心,因為它在标准的 panic 恢陷阱之外行。此模板應該可能單,因為它為每請求行一次。
更改此模板必須小心,因為它在標準的 panic 恢陷阱之外行。此模板應該可能單,因為它為每請求行一次。
## 放和重新打开、暂停和恢复日志记录
## 放和重新打開、暫停和恢復日誌記錄
如果您在 Unix 上行,您可能希望放和重新打开日志以使用 `logrotate` 或其他工具。
可以過向行中的進程`SIGUSR1`号或运`gitea manager logging release-and-reopen` 命令来强制 Gitea 放並重新打其日文件和接。
如果您在 Unix 上行,您可能希望放和重新打開日誌以使用 `logrotate` 或其他工具。
可以過向行中的進程`SIGUSR1`號或運`gitea manager logging release-and-reopen` 命令來強制 Gitea 放並重新打其日文件和接。
或者,您可能希望停和恢复日志记录 - 可以過使用 `gitea manager logging pause``gitea manager logging resume` 命令来实現。請注意,日志记录暂停时,低 INFO 级别的日事件将不会存儲,並且只会存儲有限量的事件。在暂停时,日志记录可能阻塞,管是暂时性的,但大大慢 Gitea 的行速度,因此建议僅暂停很短的时间
或者,您可能希望停和恢復日誌記錄 - 可以過使用 `gitea manager logging pause``gitea manager logging resume` 命令來實現。請注意,日志記錄暫停時,低 INFO 級別的日事件將不會儲存,並且只會儲存有限量的事件。在暫停時,日誌記錄可能阻塞,管是暫時性的,但大大慢 Gitea 的行速度,因此建議僅暫停很短的時間
### 在 Gitea 运行时添加和除日志记录
### 在 Gitea 運行時添加和除日誌記錄
可以使用 `gitea manager logging add``remove` 子命令在 Gitea 运行时添加和除日志记录
此功能只能整正在行的日志系统,不能用于启动未初始化的访问或路由日志记录器。如果您希望启动这些系,建议调整 app.ini 並(雅地)重新启动 Gitea 服
可以使用 `gitea manager logging add``remove` 子命令在 Gitea 運行時添加和除日誌記錄
此功能只能調整正在行的日誌系統,不能用於啟動未初始化的訪問或路由日誌記錄器。如果您希望啟動這些系,建議調整 app.ini 並(雅地)重新啟動 Gitea 服
些命令的主要目的是在行中的系统上轻松添加临时日志记录器,以便调查问题,因為重新启动可能会导致问题消失。
些命令的主要目的是在行中的系統上輕鬆添加臨時日誌記錄器,以便調查問題,因為重新啟動可能會導致問題消失。
## 使用 `logrotate` 而不是置的日志轮转
## 使用 `logrotate` 而不是置的日誌輪轉
Gitea 包含置的日志轮转功能,對於大多部署来说應該已经足够了。但是,如果您想使用 `logrotate` 工具:
Gitea 包含置的日誌輪轉功能,對於大多部署來說應該已經足夠了。但是,如果您想使用 `logrotate` 工具:
-`app.ini` `LOG_ROTATE` 设置`false`,禁用置的日志轮转
-`app.ini` `LOG_ROTATE` 設定`false`,禁用置的日誌輪轉
- 安裝 `logrotate`
-部署要求配置 `logrotate`,有关配置语法细节,請参阅 `man 8 logrotate`
`postrotate/endscript` 中通過 `kill -USR1``kill -10``gitea` 進程本身`USR1`
或者`gitea manager logging release-and-reopen`(使用适当的环境设置)。
确保配置适用于由 Gitea 日志记录器生成的所有文件,如上述部分所述。
-使用 `logrotate /etc/logrotate.conf --debug` 来测试您的配置
- 如果您正在使用 Docker 並容器外部行,您可以使用
-部署要求設定 `logrotate`,有關設定語法細節,請參閱 `man 8 logrotate`
`postrotate/endscript` 中通過 `kill -USR1``kill -10``gitea` 進程本身`USR1`
或者`gitea manager logging release-and-reopen`(使用適當的環境設定)。
確保設定適用於由 Gitea 日誌記錄器生成的所有文件,如上述部分所述。
-使用 `logrotate /etc/logrotate.conf --debug` 來測試您的設定
- 如果您正在使用 Docker 並容器外部行,您可以使用
`docker exec -u $OS_USER $CONTAINER_NAME sh -c 'gitea manager logging release-and-reopen'`
`docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 進程本身`USR1`
`docker exec $CONTAINER_NAME sh -c '/bin/s6-svc -1 /etc/s6/gitea/'`,或直接向 Gitea 進程本身`USR1`
下一 `logrotate`业将包括您的配置,因此不需要重新启动
您還可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加 `logrotate`
下一 `logrotate`業將包括您的設定,因此不需要重新啟動
您還可以立即使用 `logrotate /etc/logrotate.conf --force` 重新加 `logrotate`
@@ -6,110 +6,110 @@ aliases:
- /zh-tw/mail-templates
---
# 件模板
# 件模板
為了定特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。些功能的模板位 [`custom` 目錄](../administration/customizing-gitea.md) 下。
如果有自定义的替代方案,Gitea 使用部模板作為默认模板。
為了定特定操作的電子郵件主題和內容,可以使用模板來自訂 Gitea。些功能的模板位 [`custom` 目錄](../administration/customizing-gitea.md) 下。
如果有自的替代方案,Gitea 使用部模板作為預設模板。
定义模板在 Gitea 启动时加载。对它们的更改在 Gitea 重新启动之前不会被识别
模板在 Gitea 啟動時加載。對它們的更改在 Gitea 重新啟動之前不會被識別
## 支模板的件通知
## 支模板的件通知
目前,以下通知事件使用模板:
| 操作名稱 | 用途 |
| ---------- | ---------------------------------------------------------------------- |
| `new` | 建立了新的工單或合請求。 |
| `comment` | 在現有工單或合請求中建立了新的评论。 |
| `close` | 关闭了工單或合請求。 |
| `reopen` | 重新打了工單或合請求。 |
| `review` | 在合請求中進行查的首要评论。 |
| `approve` | 对合並請求進行批准的首要评论。 |
| `reject` | 对合並請求提出更改請求的查的首要评论。 |
| `code` | 关于合並請求的代码的單个评论。 |
| `assigned` | 使用者被分配到工單或合請求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对應类别的模板不存在使用的模板。 |
| `new` | 建立了新的工單或合請求。 |
| `comment` | 在現有工單或合請求中建立了新的評論。 |
| `close` | 關閉了工單或合請求。 |
| `reopen` | 重新打了工單或合請求。 |
| `review` | 在合請求中進行查的首要評論。 |
| `approve` | 對合併請求進行批准的首要評論。 |
| `reject` | 對合併請求提出更改請求的查的首要評論。 |
| `code` | 關於合併請求的程式碼的單個評論。 |
| `assigned` | 使用者被分配到工單或合請求。 |
| `default` | 未包括在上述類別中的任何操作,或者當對應類別的模板不存在使用的模板。 |
特定消息類型的模板路為:
特定消息類型的模板路為:
```sh
custom/templates/mail/{操作類型}/{操作名稱}.tmpl
```
其中 `{操作類型}``issue``pull`针对合並請求),`{操作名稱}` 是上述列出的操作名稱之一。
其中 `{操作類型}``issue``pull`針對合併請求),`{操作名稱}` 是上述列出的操作名稱之一。
例如,有关合並請求中的评论的电子邮件的特定模板是:
例如,有關合併請求中的評論的電子郵件的特定模板是:
```sh
custom/templates/mail/pull/comment.tmpl
```
然而,並不需要為每操作類型/名稱合建立模板。
使用回退系统来選择适当的模板。在此列表中,使用 _第一存在的_ 模板:
然而,並不需要為每操作類型/名稱合建立模板。
使用回退系統來選擇適當的模板。在此列表中,使用 _第一存在的_ 模板:
- 所需**操作類型**和**操作名稱**的特定模板。
- 操作類型為 `issue` 和所需**操作名稱**的模板。
- 所需**操作類型**和操作名稱為 `default` 的模板。
- 操作類型為` issue` 和操作名稱為 `default` 的模板。
唯一必需的模板是操作類型為 `issue` 操作名稱為 `default` 的模板,除非使用者在 `custom` 目錄中覆了它。
唯一必需的模板是操作類型為 `issue` 操作名稱為 `default` 的模板,除非使用者在 `custom` 目錄中覆了它。
## 模板
## 模板
件模板是 UTF-8 编码的文本文件,需要遵循以下格式之一:
件模板是 UTF-8 編碼的文本文件,需要遵循以下格式之一:
```
于主题行的文本和宏
於主題行的文本和宏
------------
于邮件正文的文本和宏
於郵件正文的文本和宏
```
或者
```
于邮件正文的文本和宏
於郵件正文的文本和宏
```
指定 __ 部分是可選的(因此也是虚线分隔符)。在使用_主_ 和 _件正文_ 模板之的分隔符需要至少三个虚线;分隔符行中不允使用其他字符。
指定 __ 部分是可選的(因此也是虛線分隔符)。在使用_主_ 和 _件正文_ 模板之的分隔符需要至少三個虛線;分隔符行中不允使用其他字符。
___件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,並提供了為每通知组装_数据上下文_。上下文包含以下元素:
___件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,並提供了為每通知組裝_資料上下文_。上下文包含以下元素:
| 名稱 | 類型 | 可用性 | 用途 |
| ------------------ | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.FallbackSubject` | string | 始可用 | 默认主题行。参见下文。 |
| `.Subject` | string | 僅在正文中可用 | 解析__。 |
| `.Body` | string | 始可用 | 工單、合請求或评论的消息, Markdown 解析為 HTML 並進行了清理。請勿 _件正文_ 混淆。 |
| `.Link` | string | 始可用 | 源工單、合請求或评论的地址。 |
| `.Issue` | models.Issue | 始可用 | 生通知的工單(或合請求)。要取特定于合並請求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工單 _不是_請求,则該字段将`nil`。 |
| `.Comment` | models.Comment | 如果用 | 如果通知是针对添加到工單或合請求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始可用 | 如果件通知与合並請求关联(即 `.Issue.PullRequest` 不為 `nil` ),`true`。 |
| `.Repo` | string | 始可用 | 存放庫的名稱,包括所有者名稱(例如 `mike/stuff`) |
| `.User` | models.User | 始可用 | 事件源存放庫的所有者。要取使用者名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始可用 | 執行触发通知事件的操作的使用者。要取使用者名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始可用 | 如果此通知僅是因為在评论中提到了使用者而生成的,並且收件人未订阅源,`true`。如果收件人已订阅工單或存放庫,`false`。 |
| `.SubjectPrefix` | string | 始可用 | 如果通知是关于除工單或合請求建立之外的其他容,`Re`;否為空字符串。 |
| `.ActionType` | string | 始可用 | `"issue"``"pull"`。它将与实际_操作類型_ 應,与選择的模板無。 |
| `.ActionName` | string | 始可用 | 它是上述操作類型之一(`new` `comment` 等),並与選择的模板應。 |
| `.ReviewComments` | []models.Comment | 始可用 | 查中的代码评论列表。评论文本`.RenderedContent` 中,引用的代码将`.Patch` 中。 |
| `.FallbackSubject` | string | 始可用 | 預設主題行。參見下文。 |
| `.Subject` | string | 僅在正文中可用 | 解析__。 |
| `.Body` | string | 始可用 | 工單、合請求或評論的消息, Markdown 解析為 HTML 並進行了清理。請勿 _件正文_ 混淆。 |
| `.Link` | string | 始可用 | 源工單、合請求或評論的地址。 |
| `.Issue` | models.Issue | 始可用 | 生通知的工單(或合請求)。要取特定於合併請求的資料(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工單 _不是_請求,則該欄位將`nil`。 |
| `.Comment` | models.Comment | 如果用 | 如果通知是針對添加到工單或合請求的評論,則其中包含有關評論的資訊。 |
| `.IsPull` | bool | 始可用 | 如果件通知與合併請求關聯(即 `.Issue.PullRequest` 不為 `nil` ),`true`。 |
| `.Repo` | string | 始可用 | 存放庫的名稱,包括所有者名稱(例如 `mike/stuff`) |
| `.User` | models.User | 始可用 | 事件源存放庫的所有者。要取使用者名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始可用 | 執行觸發通知事件的操作的使用者。要取使用者名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始可用 | 如果此通知僅是因為在評論中提到了使用者而生成的,並且收件人未訂閱源,`true`。如果收件人已訂閱工單或存放庫,`false`。 |
| `.SubjectPrefix` | string | 始可用 | 如果通知是關於除工單或合請求建立之外的其他容,`Re`;否為空字符串。 |
| `.ActionType` | string | 始可用 | `"issue"``"pull"`。它將與實際_操作類型_ 應,與選擇的模板無。 |
| `.ActionName` | string | 始可用 | 它是上述操作類型之一(`new` `comment` 等),並與選擇的模板應。 |
| `.ReviewComments` | []models.Comment | 始可用 | 查中的程式碼評論列表。評論文本`.RenderedContent` 中,引用的程式碼將`.Patch` 中。 |
所有名稱分大小
所有名稱分大小
### 模板中的主部分
### 模板中的主部分
于邮件主的模板引擎是 Golang 的 [`text/template`](https://go.dev/pkg/text/template/)。
关语法的详细信息,請参阅链接的文
於郵件主的模板引擎是 Golang 的 [`text/template`](https://go.dev/pkg/text/template/)。
關語法的詳細資訊,請參閱鏈接的文
题构建的步如下:
題構建的步如下:
-通知類型和可用的模板選择一个模板。
- 解析並解析模板(例如, `{{.Issue.Index}}` 转换為工單或合請求的编号)。
- 所有空格字符(例如 `TAB``LF` 等)转换為普通空格。
- 除所有前、尾和多的空格。
- 字符串截為前 256 字母(字符)。
-通知類型和可用的模板選擇一個模板。
- 解析並解析模板(例如, `{{.Issue.Index}}` 轉換為工單或合請求的編號)。
- 所有空格字符(例如 `TAB``LF` 等)轉換為普通空格。
- 除所有前、尾和多的空格。
- 字符串截為前 256 字母(字符)。
如果最终结果為空字符串,**或者**有可用的主模板(即所選模板不包含主部分),使用 Gitea 的**内部默认值**。
如果最終結果為空字符串,**或者**有可用的主模板(即所選模板不包含主部分),使用 Gitea 的**內部預設值**。
内部默认(回退)主题相当于
內部預設(回退)主題相當於
```
{{.SubjectPrefix}}[{{.Repo}}] {{.Issue.Title}} (#{{.Issue.Index}})
@@ -117,31 +117,31 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
例如:`Re: [mike/stuff] New color palette (#38)`
即使存在有效的主模板,Gitea 的默认主题也可以在模板的元数据中作為 `.FallbackSubject` 找到。
即使存在有效的主模板,Gitea 的預設主題也可以在模板的元資料中作為 `.FallbackSubject` 找到。
### 模板中的件正文部分
### 模板中的件正文部分
于邮件正文的模板引擎是 Golang 的 [`html/template`](https://go.dev/pkg/html/template/)。
关语法的详细信息,請参阅链接的文
於郵件正文的模板引擎是 Golang 的 [`html/template`](https://go.dev/pkg/html/template/)。
關語法的詳細資訊,請參閱鏈接的文
件正文在件主题之后進行解析,因此還有一个额外的 _数据_ 字段,即在考所有情况之后实际呈現的主
件正文在件主題之後進行解析,因此還有一個額外的 _資料_ 欄位,即在考所有情況之後實際呈現的主
期望的果是 HTML(包括结构元素,如`<html>``<body>`等)。可以`<style>` `class``style` 性進行样式设置。但是,`html/template` 進行一些 [动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点
期望的果是 HTML(包括結構元素,如`<html>``<body>`等)。可以`<style>` `class``style` 性進行樣式設定。但是,`html/template` 進行一些 [動轉義](https://go.dev/pkg/html/template/#hdr-Contexts),需要考慮這一點
不支附件(例如像或外部式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的容。外部模板必須放置在 `custom/mail` 下,並相對於該目錄引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
不支附件(例如像或外部式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的容。外部模板必須放置在 `custom/mail` 下,並相對於該目錄引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
件以 `Content-Type: multipart/alternative` 送,因此正文以 HTML 和文本格式送。通過剥离 HTML 标记来获取文本版本。
件以 `Content-Type: multipart/alternative` 送,因此正文以 HTML 和文本格式送。通過剝離 HTML 標記來獲取文本版本。
## 故障排除
件的呈現方式直接取决于邮件應用程的功能。许多邮件客端甚至不支 HTML,因此示生成件中包含的文本版本。
件的呈現方式直接取決於郵件應用程的功能。許多郵件客端甚至不支 HTML,因此示生成件中包含的文本版本。
如果模板無法呈現,只有在发送邮件时才会注意到。
如果主模板失败,将使用默认主题,如果 _件正文_ 中成功呈現了任何容,则将使用該容,忽略其他容。
如果模板無法呈現,只有在發送郵件時纔會注意到。
如果主模板失敗,將使用預設主題,如果 _件正文_ 中成功呈現了任何容,則將使用該容,忽略其他容。
如果遇到问题,請查 [Gitea 的日](../administration/logging-config.md) 以获取错误消息。
如果遇到問題,請查 [Gitea 的日](../administration/logging-config.md) 以獲取錯誤消息。
##
##
`custom/templates/mail/issue/default.tmpl`:
@@ -150,11 +150,11 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
{{if eq .ActionName "new"}}
建立了
{{else if eq .ActionName "comment"}}
评论
評論
{{else if eq .ActionName "close"}}
关闭
關閉
{{else if eq .ActionName "reopen"}}
重新打
重新打
{{else}}
更新了
{{end}}
@@ -175,7 +175,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
<body>
{{if .IsMention}}
<p>
您收到此件是因為 @{{.Doer.Name}} 提到了您。
您收到此件是因為 @{{.Doer.Name}} 提到了您。
</p>
{{end}}
<p>
@@ -187,16 +187,16 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
{{if eq .ActionName "new"}}
建立了
{{else if eq .ActionName "close"}}
关闭
關閉
{{else if eq .ActionName "reopen"}}
重新打
重新打
{{else}}
更新了
{{end}}
<a href="{{.Link}}">{{.Repo}}#{{.Issue.Index}}</a>
</p>
{{if not (eq .Body "")}}
<h3>消息容:</h3>
<h3>消息容:</h3>
<hr>
{{.Body}}
{{end}}
@@ -209,17 +209,17 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
</html>
```
該模板生成以下容:
該模板生成以下容:
### 主
### 主
> [mike/stuff] @rhonda 在合請求 #38 上進行了评论New color palette
> [mike/stuff] @rhonda 在合請求 #38 上進行了評論New color palette
### 件正文
### 件正文
> [@rhonda](#)Rhonda Myers)更新了 [mike/stuff#38](#)。
>
> #### 消息
> #### 消息
>
> \_**************\*\*\*\***************\_**************\*\*\*\***************
>
@@ -229,25 +229,25 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
>
> [在 Gitea 上查看](#)。
## 高用法
## 高用法
模板系包含一些函,可用進一步理和格式化消息。以下是其中一些函的列表:
模板系包含一些函,可用進一步理和格式化消息。以下是其中一些函的列表:
| 函名 | 參數 | 可用 | 用法 |
| 函名 | 參數 | 可用 | 用法 |
| ---------------- | ----------- | ---------- | ------------------------------------------------ |
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
| `AppName` | - | 任何地方 | `app.ini`设置,通常為 "Gitea" |
| `AppDomain` | - | 任何地方 | Gitea 的主名 |
| `EllipsisString` | string, int | 任何地方 | 字符串截為指定度;根需要添加省略 |
| `SanitizeHTML` | string | 僅正文部分 | 通過除其中的危 HTML 標籤文本進行清理 |
| `SafeHTML` | string | 僅正文部分 | 将输入作為 HTML 理;可用于输出原始的 HTML 容 |
| `AppName` | - | 任何地方 | `app.ini`設定,通常為 "Gitea" |
| `AppDomain` | - | 任何地方 | Gitea 的主名 |
| `EllipsisString` | string, int | 任何地方 | 字符串截為指定度;根需要添加省略 |
| `SanitizeHTML` | string | 僅正文部分 | 通過除其中的危 HTML 標籤文本進行清理 |
| `SafeHTML` | string | 僅正文部分 | 將輸入作為 HTML 理;可用於輸出原始的 HTML 容 |
些都是 __,而不是元数据,因此必須按以下方式使用:
些都是 __,而不是元資料,因此必須按以下方式使用:
```html
这样使用: {{SanitizeHTML "Escape<my
>text"}} 或者这样使用: {{"Escape<my
>text" | SanitizeHTML}} 或者这样使用: {{AppUrl}} 但不要像这样使用:
這樣使用: {{SanitizeHTML "Escape<my
>text"}} 或者這樣使用: {{"Escape<my
>text" | SanitizeHTML}} 或者這樣使用: {{AppUrl}} 但不要像這樣使用:
{{.AppUrl}}</my
></my
>
@@ -8,9 +8,9 @@ aliases:
# 存放庫索引器
## 设置存放庫索引器
## 設定存放庫索引器
通過在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中用此功能,Gitea 可以過存放庫的文件進行搜索:
通過在您的 [`app.ini`](../administration/config-cheat-sheet.md) 中用此功能,Gitea 可以過存放庫的文件進行搜索:
```ini
[indexer]
@@ -22,29 +22,29 @@ REPO_INDEXER_INCLUDE =
REPO_INDEXER_EXCLUDE = resources/bin/**
```
住,索引容可能消耗大量系统资源,特是在首次建立索引或全更新索引(例如升 Gitea 之)。
住,索引容可能消耗大量系統資源,特是在首次建立索引或全更新索引(例如升 Gitea 之)。
### 按大小選要索引的文件
### 按大小選要索引的文件
`MAX_FILE_SIZE`项将使索引器跳過所有大指定值的文件。
`MAX_FILE_SIZE`項將使索引器跳過所有大指定值的文件。
### 按路径選择要索引的文件
### 按路徑選擇要索引的文件
Gitea 使用 [`gobwas/glob` ](https://github.com/gobwas/glob) 中的 glob 模式匹配来選择要包含在索引中的文件。
Gitea 使用 [`gobwas/glob` ](https://github.com/gobwas/glob) 中的 glob 模式匹配來選擇要包含在索引中的文件。
限制文件列表可以防止索引被派生或無的文件(例如 lss、sym、map 等)污染,而使搜索果更相关。这還有助于减小索引的大小。
限制文件列表可以防止索引被派生或無的文件(例如 lss、sym、map 等)污染,而使搜索果更相關。這還有助於減小索引的大小。
`REPO_INDEXER_EXCLUDE_VENDORED`默认值為 true排除供應商文件不包含在索引中。
`REPO_INDEXER_EXCLUDE_VENDORED`預設值為 true排除供應商文件不包含在索引中。
`REPO_INDEXER_INCLUDE`默认值為空)是一个逗号分隔的 glob 模式列表,用在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`默认值為空)是一个逗号分隔的 glob 模式列表,用于从索引中**排除**的文件。該列表匹配的文件将不会被索引。`REPO_INDEXER_EXCLUDE` 优先于 `REPO_INDEXER_INCLUDE`
`REPO_INDEXER_INCLUDE`預設值為空)是一個逗號分隔的 glob 模式列表,用在索引中**包含**的文件。空列表表示“_包含所有文件_”。
`REPO_INDEXER_EXCLUDE`預設值為空)是一個逗號分隔的 glob 模式列表,用於從索引中**排除**的文件。該列表匹配的文件將不會被索引。`REPO_INDEXER_EXCLUDE` 優先於 `REPO_INDEXER_INCLUDE`
模式匹配工作方式如下:
- 要匹配所有`.txt` 展名的文件,無在哪目錄中,請使用 `**.txt`
- 要匹配僅在存放庫的根级别中具有 `.txt` 展名的所有文件,請使用 `*.txt`
- 要匹配所有`.txt` 展名的文件,無在哪目錄中,請使用 `**.txt`
- 要匹配僅在存放庫的根級別中具有 `.txt` 展名的所有文件,請使用 `*.txt`
- 要匹配 `resources/bin` 目錄及其子目錄中的所有文件,請使用 `resources/bin/**`
- 要匹配位 `resources/bin` 目錄下的所有文件,請使用 `resources/bin/*`
- 要匹配位 `resources/bin` 目錄下的所有文件,請使用 `resources/bin/*`
- 要匹配所有名為 `Makefile` 的文件,請使用 `**Makefile`
- 匹配目錄有效果;模式 `resources/bin`包含/排除該目錄中的文件;`resources/bin/**`
- 所有文件和模式都规范化為小,因此 `**Makefile``**makefile``**MAKEFILE` 是等效的。
- 匹配目錄有效果;模式 `resources/bin`包含/排除該目錄中的文件;`resources/bin/**`
- 所有文件和模式都規範化為小,因此 `**Makefile``**makefile``**MAKEFILE` 是等效的。
@@ -8,30 +8,30 @@ aliases:
# 反向代理
## 通用配置
## 通用設定
1. 在您的 `app.ini` 文件中添加配置 `[server] ROOT_URL = https://git.example.com/`
2. `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo`
3. 保反向代理不会解码 URI。`https://git.example.com/a%2Fb`的請求應該被传递给 `http://gitea:3000/a%2Fb`
4. `Host``X-Forwarded-Proto` 被正确的传递给 Gitea,使 Gitea 可以看到正在访问的真 URL。
1. 在您的 `app.ini` 文件中添加設定 `[server] ROOT_URL = https://git.example.com/`
2. `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo`
3. 保反向代理不會解碼 URI。`https://git.example.com/a%2Fb`的請求應該被傳遞給 `http://gitea:3000/a%2Fb`
4. `Host``X-Forwarded-Proto` 被正確的傳遞給 Gitea,使 Gitea 可以看到正在訪問的真 URL。
## 使用子路
## 使用子路
通常,**不推** Gitea 放到子路。人很少使用此配置,並且在极少数情况下可能出現一些问题
通常,**不推** Gitea 放到子路。人很少使用此設定,並且在極少數情況下可能出現一些問題
為了 Gitea 在子路工作(例如:`https://common.example.com/gitea/`),需要在上面的通用配置之外進行一些外的配置
為了 Gitea 在子路工作(例如:`https://common.example.com/gitea/`),需要在上面的通用設定之外進行一些外的設定
1.`app.ini` 文件中使用配置 `[server] ROOT_URL = https://common.example.com/gitea/`
2. `https://common.example.com/gitea/foo` 反向代理到 `http://gitea:3000/foo`
3. 容器映像註冊表需要在根目錄级别有一固定的子路 `v2`,您必須做下列配置
- `https://common.example.com/v2` 反向代理到 `http://gitea:3000/v2`
- 保 URI 和标头也被正确的传递(见上面的通用配置
1.`app.ini` 文件中使用設定 `[server] ROOT_URL = https://common.example.com/gitea/`
2. `https://common.example.com/gitea/foo` 反向代理到 `http://gitea:3000/foo`
3. 容器映像註冊表需要在根目錄級別有一固定的子路 `v2`,您必須做下列設定
- `https://common.example.com/v2` 反向代理到 `http://gitea:3000/v2`
- 保 URI 和標頭也被正確的傳遞(見上面的通用設定
## 使用 Nginx 作為反向代理服
## 使用 Nginx 作為反向代理服
如果您想使用 Nginx 作為 Gitea 的反向代理服,您可以照以下 `nginx.conf` 配置`server``http` 部分。
如果您想使用 Nginx 作為 Gitea 的反向代理服,您可以照以下 `nginx.conf` 設定`server``http` 部分。
`client_max_body_size`大,否在上大文件时会出現 "client_max_body_size" 错误
`client_max_body_size`大,否在上大文件時會出現 "client_max_body_size" 錯誤
```nginx
server {
@@ -49,9 +49,9 @@ server {
}
```
## 使用 Nginx 作為反向代理服务並将 Gitea 路由至一子路
## 使用 Nginx 作為反向代理服務並將 Gitea 路由至一子路
如果您已有一域名並且想 Gitea 共享該域名,您可以增加以下 `nginx.conf` 配置`server``http` 部分,為 Gitea 添加路由規則:
如果您已有一域名並且想 Gitea 共享該域名,您可以增加以下 `nginx.conf` 設定`server``http` 部分,為 Gitea 添加路由規則:
```nginx
server {
@@ -59,12 +59,12 @@ server {
location ~ ^/(gitea|v2)($|/) {
client_max_body_size 512M;
# 保 nginx 使用未转义 URI 按原保持 "%2F"。 保 nginx 去除 "/gitea" 子路径前缀 按原样传递 "/v2"。
# 保 nginx 使用未轉義 URI 按原保持 "%2F"。 保 nginx 去除 "/gitea" 子路徑前綴 按原樣傳遞 "/v2"。
rewrite ^ $request_uri;
rewrite ^(/gitea)?(/.*) $2 break;
proxy_pass http://127.0.0.1:3000$uri;
# 其他的常 HTTP 表头,见上面“使用 Nginx 作為反向代理服”小的配置
# 其他的常 HTTP 表頭,見上面“使用 Nginx 作為反向代理服”小的配置
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
@@ -75,27 +75,27 @@ server {
}
```
您**必須**在 Gitea 的配置文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`配置项
您**必須**在 Gitea 的設定文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`設定項
## 使用 Nginx 直接提供静态资
## 使用 Nginx 直接提供靜態資
可以通過将资源分為静态和动态两种類型来调节性能。
可以透過將資源分為靜態和動態兩種類型來調節性能。
CSS 文件、JavaScript 文件、片和字體是静态内容。首、存放庫视图和工單列表是动态内容。
CSS 文件、JavaScript 文件、片和字體是靜態內容。首、存放庫視圖和工單列表是動態內容。
Nginx 可以直接提供静态资源,並且只代理动态资源請求 Gitea。
Nginx 為提供静态内容進行了化,而代理大響應可能与这一优化行為相反。
[https://serverfault.com/q/587386](https://serverfault.com/q/587386)
Nginx 可以直接提供靜態資源,並且只代理動態資源請求 Gitea。
Nginx 為提供靜態內容進行了化,而代理大響應可能與這一優化行為相反。
[https://serverfault.com/q/587386](https://serverfault.com/q/587386)
Gitea 源代码存放庫的一快照下`/path/to/gitea`
在此之,在本地存放庫目錄`make frontend` 生成静态资源。在这个情况下,我们只对 `public/` 目錄感趣,您可以除剩下的其他目錄。
(為了生成静态资源,您需要安裝一[ npm 的 Node ](https://nodejs.org/en/download/)和 `make`
Gitea 源程式碼存放庫的一快照下`/path/to/gitea`
在此之,在本地存放庫目錄`make frontend` 生成靜態資源。在這個情況下,我們只對 `public/` 目錄感趣,您可以除剩下的其他目錄。
(為了生成靜態資源,您需要安裝一[ npm 的 Node ](https://nodejs.org/en/download/)和 `make`
决于您的使用者量的大小,您可以流量分离到两个不同的服器,或者為静态资源配置一个 cdn。
決於您的使用者量的大小,您可以流量分離到兩個不同的服器,或者為靜態資源設定一個 cdn。
### 單服务器节点,單域名
### 單伺服器節點,單域名
`[server] STATIC_URL_PREFIX = /_/static` 入您的 Gitea 配置文件,並配置 nginx
`[server] STATIC_URL_PREFIX = /_/static` 入您的 Gitea 設定文件,並設定 nginx
```nginx
server {
@@ -112,12 +112,12 @@ server {
}
```
### 双服务器节点,双域名
### 雙伺服器節點,雙域名
`[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 入您的 Gitea 配置文件,並配置 nginx
`[server] STATIC_URL_PREFIX = http://cdn.example.com/gitea` 入您的 Gitea 設定文件,並設定 nginx
```nginx
# 行 Gitea 的服
# 行 Gitea 的服
server {
listen 80;
server_name git.example.com;
@@ -129,7 +129,7 @@ server {
```
```nginx
# 提供静态资源的服
# 提供靜態資源的服
server {
listen 80;
server_name cdn.example.com;
@@ -144,9 +144,9 @@ server {
}
```
## 使用 Apache HTTPD 作為反向代理服
## 使用 Apache HTTPD 作為反向代理服
如果您想使用 Apache HTTPD 作為 Gitea 的反向代理服,您可以為您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目錄下):
如果您想使用 Apache HTTPD 作為 Gitea 的反向代理服,您可以為您的 Apache HTTPD 作如下設定(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下):
```apacheconf
<VirtualHost *:80>
@@ -159,11 +159,11 @@ server {
</VirtualHost>
```
注:必須用以下 Apache HTTPD 件:`proxy` `proxy_http`
注:必須用以下 Apache HTTPD 件:`proxy` `proxy_http`
## 使用 Apache HTTPD 作為反向代理服务並将 Gitea 路由至一子路
## 使用 Apache HTTPD 作為反向代理服務並將 Gitea 路由至一子路
如果您已有一域名並且想 Gitea 共享該域名,您可以增加以下配置為 Gitea 添加路由規則(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目錄下):
如果您已有一域名並且想 Gitea 共享該域名,您可以增加以下設定為 Gitea 添加路由規則(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下):
```
<VirtualHost *:80>
@@ -173,7 +173,7 @@ server {
Allow from all
</Proxy>
AllowEncodedSlashes NoDecode
# 注意: 路和 URL 面都不要写路径符号 '/'
# 注意: 路和 URL 面都不要寫路徑符號 '/'
ProxyPass /git http://localhost:3000 nocanon
</VirtualHost>
```
@@ -186,20 +186,20 @@ server {
Allow from all
</Proxy>
AllowEncodedSlashes NoDecode
# 注意: 路和 URL 面都不要写路径符号 '/'
# 注意: 路和 URL 面都不要寫路徑符號 '/'
ProxyPass /git http://localhost:3000 nocanon
ProxyPreserveHost On
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
```
您**必須**在 Gitea 的配置文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`配置项
您**必須**在 Gitea 的設定文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`設定項
注:必須用以下 Apache HTTPD 件:`proxy` `proxy_http`
注:必須用以下 Apache HTTPD 件:`proxy` `proxy_http`
## 使用 Caddy 作為反向代理服
## 使用 Caddy 作為反向代理服
如果您想使用 Caddy 作為 Gitea 的反向代理服,您可以在 `Caddyfile` 中添加如下配置
如果您想使用 Caddy 作為 Gitea 的反向代理服,您可以在 `Caddyfile` 中添加如下設定
```
git.example.com {
@@ -207,9 +207,9 @@ git.example.com {
}
```
## 使用 Caddy 作為反向代理服务並将 Gitea 路由至一子路
## 使用 Caddy 作為反向代理服務並將 Gitea 路由至一子路
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 `Caddyfile` 文件中增加以下配置,為 Gitea 添加路由規則:
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 `Caddyfile` 文件中增加以下設定,為 Gitea 添加路由規則:
```
git.example.com {
@@ -220,23 +220,23 @@ git.example.com {
}
```
您**必須**在 Gitea 的配置文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`配置项
您**必須**在 Gitea 的設定文件中正的添加`[server] ROOT_URL = http://git.example.com/git/`設定項
## 使用 IIS 作為反向代理服
## 使用 IIS 作為反向代理服
如果您想使用 IIS 作為 Gitea 的反向代理服,你需要為 IIS 设置 URL 重写来作為反向代理。
如果您想使用 IIS 作為 Gitea 的反向代理服,你需要為 IIS 設定 URL 重寫來作為反向代理。
1. 在 IIS 中设置一个空网页,比如命名為 `Gitea Proxy`
2.[软社区中為 IIS 设置 URL 重的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前步進行配置,也就是:
1. 在 IIS 中設定一個空網頁,比如命名為 `Gitea Proxy`
2.[軟社區中為 IIS 設定 URL 重的指南](https://techcommunity.microsoft.com/t5/iis-support-blog/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world/ba-p/846222#M343)的前步進行設定,也就是:
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安裝 Application Request Routing稱 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件
- 一但这个模組被安裝到 IIS 上,你将会在 IIS 管理控制看到一叫做 URL Rewrite 的新图标
- IIS 管理控制,在左的列表中點擊 `Gitea Proxy` 网页。在中選中並且擊 URL Rewrite 的图标来加载 URL 重的面板。
- 在管理控制的右边選择 `Add Rule` 操作,並且在 `Inbound and Outbound Rules`中選 `Reverse Proxy Rule`
- 在 Inbound Rules 中, server name 设置為 Gitea 正在行的主以及應端口。例如,如果你在 localhost 的 3000 端口上行 Gitea则设置`127.0.0.1:3000`
- 用 SSL Offloading
- 在 Outbound Rules 中,确保设置`Rewrite the domain names of the links in HTTP response`,並且 `From:` 设置為上面的 server name `To:` 设置為你的外部访问名稱,例如:`git.example.com`
- 現在,根下面的容為您的网页编辑 `web.config` `127.0.0.1:3000``git.example.com` 改為适当的值)
- 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安裝 Application Request Routing稱 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下載這個外掛
- 一但這個模組被安裝到 IIS 上,你將會在 IIS 管理控制看到一叫做 URL Rewrite 的新圖標
- IIS 管理控制,在左的列表中點擊 `Gitea Proxy` 網頁。在中選中並且擊 URL Rewrite 的圖標來加載 URL 重的面板。
- 在管理控制的右邊選擇 `Add Rule` 操作,並且在 `Inbound and Outbound Rules`中選 `Reverse Proxy Rule`
- 在 Inbound Rules 中, server name 設定為 Gitea 正在行的主以及應端口。例如,如果你在 localhost 的 3000 端口上行 Gitea則設定`127.0.0.1:3000`
- 用 SSL Offloading
- 在 Outbound Rules 中,確保設定`Rewrite the domain names of the links in HTTP response`,並且 `From:` 設定為上面的 server name `To:` 設定為你的外部訪問名稱,例如:`git.example.com`
- 現在,根下面的容為您的網頁編輯 `web.config` `127.0.0.1:3000``git.example.com` 改為適當的值)
```xml
<?xml version="1.0" encoding="UTF-8"?>
@@ -305,11 +305,11 @@ git.example.com {
</configuration>
```
## 使用 HAProxy 作為反向代理服
## 使用 HAProxy 作為反向代理服
如果您想使用 HAProxy 作為 Gitea 的反向代理服,您可以下面的容加入您的 HAProxy 配置
如果您想使用 HAProxy 作為 Gitea 的反向代理服,您可以下面的容加入您的 HAProxy 設定
在 frontend 部分加入一 acl 来将对 gitea.example.com 的請求重定向到正确的后端。
在 frontend 部分加入一 acl 來將對 gitea.example.com 的請求重定向到正確的後端。
```
frontend http-in
@@ -319,18 +319,18 @@ frontend http-in
...
```
添加之前定好的 backend 部分
添加之前定好的 backend 部分
```
backend gitea
server localhost:3000 check
```
如果您 http 容重定向到 https,上面的配置文件也能使用。只需要住,在 HAProxy 和 Gitea 之间的连接将由 http 完成,所以你不需要在 Gitea 的配置文件中用 https。
如果您 http 容重定向到 https,上面的設定文件也能使用。只需要住,在 HAProxy 和 Gitea 之間的連接將由 http 完成,所以你不需要在 Gitea 的設定文件中用 https。
## 使用 HAProxy 作為反向代理服务並将 Gitea 路由至一子路
## 使用 HAProxy 作為反向代理服務並將 Gitea 路由至一子路
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 HAProxy 中加入如下配置,為 Gitea 添加路由規則:
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 HAProxy 中加入如下設定,為 Gitea 添加路由規則:
```
frontend http-in
@@ -340,9 +340,9 @@ frontend http-in
...
```
这个配置下,http://example.com/gitea/ 被重定向到您的 Gitea 例。
這個設定下,http://example.com/gitea/ 被重定向到您的 Gitea 例。
接下,對於 backend 部分:
接下,對於 backend 部分:
```
backend gitea
@@ -350,13 +350,13 @@ backend gitea
server localhost:3000 check
```
添加的 http-request 在需要的时候会自动加入反斜/,並且通過 http://example.com/gitea 正确设置為根来在内部路径中删除 /gitea,使其能正常工作。
添加的 http-request 在需要的時候會自動加入反斜/,並且通過 http://example.com/gitea 正確設定為根來在內部路徑中刪除 /gitea,使其能正常工作。
您**必須**在 Gitea 的配置文件中正的添加`[server] ROOT_URL = http://example.com/gitea/`配置项
您**必須**在 Gitea 的設定文件中正的添加`[server] ROOT_URL = http://example.com/gitea/`設定項
## 使用 Traefik 作為反向代理服
## 使用 Traefik 作為反向代理服
如果您想使用 traefik 作為 Gitea 的反向代理服,您可以在 `docker-compose.yaml` 中添加 label 部分(假使用 docker 作為 traefik 的 provider):
如果您想使用 traefik 作為 Gitea 的反向代理服,您可以在 `docker-compose.yaml` 中添加 label 部分(假使用 docker 作為 traefik 的 provider):
```yaml
gitea:
@@ -368,11 +368,11 @@ gitea:
- "traefik.http.services.gitea-websecure.loadbalancer.server.port=3000"
```
这份配置假设您使用 traefik 来处理 HTTPS 服,並在其和 Gitea 之使用 HTTP 進行通信。
這份設定假設您使用 traefik 來處理 HTTPS 服,並在其和 Gitea 之使用 HTTP 進行通信。
## 使用 Traefik 作為反向代理服务並将 Gitea 路由至一子路
## 使用 Traefik 作為反向代理服務並將 Gitea 路由至一子路
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 `docker-compose.yaml` 文件中增加以下配置,為 Gitea 添加路由規則(假使用 docker 作為 traefik 的 provider):
如果您已有一域名並且想 Gitea 共享該域名,您可以在您的 `docker-compose.yaml` 文件中增加以下設定,為 Gitea 添加路由規則(假使用 docker 作為 traefik 的 provider):
```yaml
gitea:
@@ -386,6 +386,6 @@ gitea:
- "traefik.http.routers.gitea.middlewares=gitea-stripprefix"
```
这份配置假设您使用 traefik 来处理 HTTPS 服,並在其和 Gitea 之使用 HTTP 進行通信。
這份設定假設您使用 traefik 來處理 HTTPS 服,並在其和 Gitea 之使用 HTTP 進行通信。
您**必須**在 Gitea 的配置文件中正的添加`[server] ROOT_URL = http://example.com/gitea/`配置项
您**必須**在 Gitea 的設定文件中正的添加`[server] ROOT_URL = http://example.com/gitea/`設定項
@@ -8,21 +8,21 @@ aliases:
# 搜索引擎索引
默认情况下,您的 Gitea 安裝被搜索引擎索引。
如果您不希望您的存放庫搜索引擎可,請進一步阅读
預設情況下,您的 Gitea 安裝被搜索引擎索引。
如果您不希望您的存放庫搜索引擎可,請進一步閱讀
## 使用 robots.txt 阻止搜索引擎索引
為了使 Gitea 為顶级安裝提供自定义`robots.txt`默认為空的 404),請在 [`custom`文件`CustomPath`]administration/customizing-gitea.md)中建立一名為 `public/robots.txt` 的文件。
為了使 Gitea 為頂級安裝提供自`robots.txt`預設為空的 404),請在 [`custom`文件`CustomPath`]administration/customizing-gitea.md)中建立一名為 `public/robots.txt` 的文件。
如何配置 `robots.txt`例,請考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
如何設定 `robots.txt`例,請考 [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt)。
```txt
User-agent: *
Disallow: /
```
如果您 Gitea 安裝在子目錄中,需要在顶级目錄中建立或编辑 `robots.txt`
如果您 Gitea 安裝在子目錄中,需要在頂級目錄中建立或編輯 `robots.txt`
```txt
User-agent: *
@@ -6,36 +6,36 @@ aliases:
- /zh-tw/signing
---
# GPG 提交
# GPG 提交
Gitea 通過查提交是否由 Gitea 数据库中的密钥签名,或者提交是否 Git 的默认密钥匹配,驗證提供的中的 GPG 提交名。
Gitea 通過查提交是否由 Gitea 資料庫中的密鑰簽名,或者提交是否 Git 的預設密鑰匹配,驗證提供的中的 GPG 提交名。
钥不会被检查以定它是否已過期或撤。密也不会与密钥服务器進行查。
鑰不會被檢查以定它是否已過期或撤。密也不會與密鑰伺服器進行查。
如果找不到用驗證提交的密,提交将被标记為灰色的未锁定图标。如果提交被标记為红色的未锁定图标,则表示它使用有 ID 的密钥签名。
如果找不到用驗證提交的密,提交將被標記為灰色的未鎖定圖標。如果提交被標記為紅色的未鎖定圖標,則表示它使用有 ID 的密鑰簽名。
請注意:提交的署者不必是提交的作者或提交者。
請注意:提交的署者不必是提交的作者或提交者。
此功能要求 Git >= 1.7.9,但要現全部功能,需要 Git >= 2.0.0。
此功能要求 Git >= 1.7.9,但要現全部功能,需要 Git >= 2.0.0。
## 自动签
## 自動簽
多地方 Gitea 生成提交:
多地方 Gitea 生成提交:
- 存放庫初始化
- Wiki 更改
- 使用编辑器或 API 進行的 CRUD 操作
- 从合並請求進行合
- 使用編輯器或 API 進行的 CRUD 操作
- 從合併請求進行合
据配置和服务器信任,您可能希望 Gitea 对这些提交進行名。
據設定和伺服器信任,您可能希望 Gitea 對這些提交進行名。
## 安裝和生成 Gitea 的 GPG 密
## 安裝和生成 Gitea 的 GPG 密
如何安裝名密钥由服务器管理员决定。Gitea 目前使用服器的 `git` 命令生成所有提交,因此使用服器的 `gpg` 進行名(如果配置了)。管理應該查 GPG 的最佳实践 - 特是可能建僅安裝名的子密,而不是主名和認證的密
如何安裝名密鑰由伺服器管理員決定。Gitea 目前使用服器的 `git` 命令生成所有提交,因此使用服器的 `gpg` 進行名(如果設定了)。管理應該查 GPG 的最佳實踐 - 特是可能建僅安裝名的子密,而不是主名和認證的密
## 通用配置
## 通用設定
Gitea 的签名配置可以在 `app.ini``[repository.signing]` 部分找到:
Gitea 的簽名設定可以在 `app.ini``[repository.signing]` 部分找到:
```ini
...
@@ -53,84 +53,84 @@ MERGES = pubkey, twofa, basesigned, commitssigned
### `SIGNING_KEY`
首先讨论的選`SIGNING_KEY`。有三主要選
首先討論的選`SIGNING_KEY`。有三主要選
- `none` - 这将阻止 Gitea 任何提交進行
- `default` - Gitea 使用 `git config`配置的默认密钥
- `KEYID` - Gitea 使用具有 ID `KEYID` 的 GPG 密钥对提交進行名。在这种情况下,您應該提供 `SIGNING_NAME``SIGNING_EMAIL`,以便示此密钥的信息
- `none` - 這將阻止 Gitea 任何提交進行
- `default` - Gitea 使用 `git config`設定的預設密鑰
- `KEYID` - Gitea 使用具有 ID `KEYID` 的 GPG 密鑰對提交進行名。在這種情況下,您應該提供 `SIGNING_NAME``SIGNING_EMAIL`,以便示此密鑰的資訊
`default`项将读`git config` 中的 `commit.gpgsign` - 如果设置了該選,它使用 `user.signingkey``user.name``user.email`果。
`default`項將讀`git config` 中的 `commit.gpgsign` - 如果設定了該選,它使用 `user.signingkey``user.name``user.email`果。
通過在 Gitea 的存放庫中整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 為每存放庫提供不同的名密。然而,这显然不是一理想的使用者面,因此可能会发生更改。
通過在 Gitea 的存放庫中調整 Git 的 `config` 文件,可以使用 `SIGNING_KEY=default` 為每存放庫提供不同的名密。然而,這顯然不是一理想的使用者面,因此可能會發生更改。
:::warning
**自 1.17 起**Gitea 在自己的主目錄 `[git].HOME_PATH`默认`%(APP_DATA_PATH)/home`)中行 git,並使用自己的配置文件 `{[git].HOME_PATH}/.gitconfig`
**自 1.17 起**Gitea 在自己的主目錄 `[git].HOME_PATH`預設`%(APP_DATA_PATH)/home`)中行 git,並使用自己的設定文件 `{[git].HOME_PATH}/.gitconfig`
如果您有自己定的 Gitea git 配置,您應該将这些配置设置在系 git 配置文件中(例如 `/etc/gitconfig`)或者 Gitea 的部 git 配置文件 `{[git].HOME_PATH}/.gitconfig` 中。
如果您有自己定的 Gitea git 設定,您應該將這些設定設定在系 git 設定文件中(例如 `/etc/gitconfig`)或者 Gitea 的部 git 設定文件 `{[git].HOME_PATH}/.gitconfig` 中。
git 命令相的主目錄文件(如 `.gnupg`)也應該放在 Gitea 的 git 主目錄 `[git].HOME_PATH` 中。
如果您希望 `.gnupg` 目錄放在 `{[git].HOME_PATH}/` 之外的位置,請考虑设置 `$GNUPGHOME` 环境变量為您首選的位置,否 Gitea 将会从 `{[git].HOME_PATH}/.gnupg` 查找私
git 命令相的主目錄文件(如 `.gnupg`)也應該放在 Gitea 的 git 主目錄 `[git].HOME_PATH` 中。
如果您希望 `.gnupg` 目錄放在 `{[git].HOME_PATH}/` 之外的位置,請考慮設定 `$GNUPGHOME` 環境變量為您首選的位置,否 Gitea 將會從 `{[git].HOME_PATH}/.gnupg` 查找私
:::
### `INITIAL_COMMIT`
此選项确定在建立存放庫Gitea 是否應該初始提交進行名。可能的取值有:
此選項確定在建立存放庫Gitea 是否應該初始提交進行名。可能的取值有:
- `never`从不签
- `pubkey`:僅在使用者有公钥时進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `always`:始终签
- `never`從不簽
- `pubkey`:僅在使用者有公鑰時進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `always`:始終簽
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true提交将被签名。
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true提交將被簽名。
### `WIKI`
此選项确定 Gitea 是否應該 Wiki 的提交進行名。可能的取值有:
此選項確定 Gitea 是否應該 Wiki 的提交進行名。可能的取值有:
- `never`从不签
- `pubkey`:僅在使用者有公钥时進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `parentsigned`:僅在父提交已签名时進行名。
- `always`:始终签
- `never`從不簽
- `pubkey`:僅在使用者有公鑰時進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `parentsigned`:僅在父提交已簽名時進行名。
- `always`:始終簽
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true提交将被签名。
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true提交將被簽名。
### `CRUD_ACTIONS`
此選项确定 Gitea 是否應該 Web 编辑器或 API CRUD 操作的提交進行名。可能的取值有:
此選項確定 Gitea 是否應該 Web 編輯器或 API CRUD 操作的提交進行名。可能的取值有:
- `never`从不签
- `pubkey`:僅在使用者有公钥时進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `parentsigned`:僅在父提交已签名时進行名。
- `always`:始终签
- `never`從不簽
- `pubkey`:僅在使用者有公鑰時進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `parentsigned`:僅在父提交已簽名時進行名。
- `always`:始終簽
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true更改将被签名。
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true更改將被簽名。
### `MERGES`
此選项确定 Gitea 是否應該 PR 的合提交進行名。可能的選有:
此選項確定 Gitea 是否應該 PR 的合提交進行名。可能的選有:
- `never`从不签
- `pubkey`:僅在使用者有公钥时進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `basesigned`:僅在基存放庫中的父提交已签名时進行名。
- `headsigned`:僅在分支中的提交已签名时進行名。
- `commitssigned`:僅在分支中的所有提交到合並点的提交都已签名时進行名。
- `approved`:僅已批准的合到受保分支的提交進行名。
- `always`:始终签
- `never`從不簽
- `pubkey`:僅在使用者有公鑰時進行
- `twofa`:僅在使用者使用 2FA 登入進行
- `basesigned`:僅在基存放庫中的父提交已簽名時進行名。
- `headsigned`:僅在分支中的提交已簽名時進行名。
- `commitssigned`:僅在分支中的所有提交到合併點的提交都已簽名時進行名。
- `approved`:僅已批准的合到受保分支的提交進行名。
- `always`:始終簽
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true则合並将被签名。
除了 `never``always` 之外的選可以合為逗分隔的列表。如果所有選的選都為 true則合併將被簽名。
## 获取签名密的公
## 獲取簽名密的公
于签署 Gitea 提交的公可以過 API 取:
於簽署 Gitea 提交的公可以過 API 取:
```sh
/api/v1/signing-key.gpg
```
在存在特定存放庫的密的情下,可以過以下方式取:
在存在特定存放庫的密的情下,可以過以下方式取:
```sh
/api/v1/repos/:username/:reponame/signing-key.gpg
@@ -6,54 +6,54 @@ aliases:
- /zh-tw/guidelines-backend
---
# 后端开发指南
# 後端開發指南
## 背景
Gitea 使用 Golang 作為后端编程语言。它使用了多第三方包,並且自己也编写了一些包。
例如,Gitea 使用[Chi](https://github.com/go-chi/chi)作為基本的 Web 框架。[Xorm](https://xorm.io)是一个用于与数据库交互的 ORM 框架。
因此,管理些包非常重要。在开始编写后端代码之前,請考以下准则
Gitea 使用 Golang 作為後端編程語言。它使用了多第三方包,並且自己也編寫了一些包。
例如,Gitea 使用[Chi](https://github.com/go-chi/chi)作為基本的 Web 框架。[Xorm](https://xorm.io)是一個用於與資料庫交互的 ORM 框架。
因此,管理些包非常重要。在開始編寫後端程式碼之前,請考以下準則
## 包设计准则
## 包設計準則
### 包列表
為了保持易理解的代码並避免循环依赖,拥有良好的代码结构是很重要的。Gitea 端分為以下几个部分:
為了保持易理解的程式碼並避免循環依賴,擁有良好的程式碼結構是很重要的。Gitea 端分為以下幾個部分:
- `build`帮助构建 Gitea 的本。
- `cmd`:包含所有 Gitea 的实际子命令,包括 web、doctor、serv、hooks、admin 等。`web`将启动 Web 服`serv``hooks`被 Git 或 OpenSSH 用。其他子命令可以帮助维护 Gitea。
- `tests`:常用的测试函数
- `tests/integration`集成测试,用于测试后端回归
- `tests/e2e`:端到端测试,用于测试前端和端的容性和视觉回归
- `models`:包含由 xorm 用于构建数据库表的数据结构。它還包含查和更新数据库的函。應避免其他 Gitea 代码的依赖关系。在某些情下,比如日志记录时可以例外。
- `models/db`:基本的数据库操作。所有其他`models/xxx`包都應依赖于此包。`GetEngine`只能 models/中用。
- `models/fixtures`:單元测试和集成测试中使用的示例数据。一`yml`文件表示一个将在测试开始时加载到数据库中的表。
- `models/migrations`儲不同版本之间的数据库迁移。修改数据库结构的 PR**必須**包含一个迁移步
- `modules`:在 Gitea 中理特定功能的不同模組。工作正在進行中:其中一些模組應該移到`services`中,特是那些依赖于 models 的模組,因為它们依赖于数据库
- `modules/setting`存儲从 ini 文件中取的所有系统配置,並在各引用。但是在可能的情下,應其作為函參數使用。
- `modules/git`:用于与`Git`命令行或 Gogit 包交互的包。
- `public`编译后的前端文件(JavaScript、像、CSS 等)
- `routers`处理服务器請求。由它使用其他 Gitea 包来处理請求,因此其他包(models、modules 或 services)不能依赖于 routers。
- `routers/api`:包含`/api/v1`路由,用于处理 RESTful API 請求。
- `routers/install`:只能在系统处于安裝模式(INSTALL_LOCK=false響應。
- `routers/private`:僅由部子命令用,特`serv``hooks`
- `routers/web`处理来自 Web 浏览器或 Git SMART HTTP 协议的 HTTP 請求。
- `services`:用于常见路由操作或命令執行的支持函数。使用`models``modules`来处理請求。
- `templates`:用生成 HTML 出的 Golang 模板。
- `build`幫助構建 Gitea 的本。
- `cmd`:包含所有 Gitea 的實際子命令,包括 web、doctor、serv、hooks、admin 等。`web`將啟動 Web 服`serv``hooks`被 Git 或 OpenSSH 調用。其他子命令可以幫助維護 Gitea。
- `tests`:常用的測試函數
- `tests/integration`整合測試,用於測試後端迴歸
- `tests/e2e`:端到端測試,用於測試前端和端的容性和視覺迴歸
- `models`:包含由 xorm 用於構建資料庫表的資料結構。它還包含查和更新資料庫的函。應避免其他 Gitea 程式碼的依賴關係。在某些情下,比如日誌記錄時可以例外。
- `models/db`:基本的資料庫操作。所有其他`models/xxx`包都應依賴於此包。`GetEngine`只能 models/中調用。
- `models/fixtures`:單元測試和整合測試中使用的範例資料。一`yml`文件表示一個將在測試開始時加載到資料庫中的表。
- `models/migrations`:儲不同版本之間的資料庫遷移。修改資料庫結構的 PR**必須**包含一個遷移步
- `modules`:在 Gitea 中理特定功能的不同模組。工作正在進行中:其中一些模組應該移到`services`中,特是那些依賴於 models 的模組,因為它們依賴於資料庫
- `modules/setting`儲存從 ini 文件中取的所有系統設定,並在各引用。但是在可能的情下,應其作為函參數使用。
- `modules/git`:用於與`Git`命令行或 Gogit 包交互的包。
- `public`編譯後的前端文件(JavaScript、像、CSS 等)
- `routers`處理伺服器請求。由它使用其他 Gitea 包來處理請求,因此其他包(models、modules 或 services)不能依賴於 routers。
- `routers/api`:包含`/api/v1`路由,用於處理 RESTful API 請求。
- `routers/install`:只能在系統處於安裝模式(INSTALL_LOCK=false響應。
- `routers/private`:僅由部子命令調用,特`serv``hooks`
- `routers/web`處理來自 Web 瀏覽器或 Git SMART HTTP 協議的 HTTP 請求。
- `services`:用於常見路由操作或命令執行的支援函數。使用`models``modules`來處理請求。
- `templates`:用生成 HTML 出的 Golang 模板。
### 包依赖关系
### 包依賴關係
Golang 不支持导入循,我必須仔细决定包之的依赖关系。这些包之有一些级别。以下是理想的包依赖关系方向。
Golang 不支援導入循,我必須仔細決定包之的依賴關係。這些包之有一些級別。以下是理想的包依賴關係方向。
`cmd` -> `routers` -> `services` -> `models` -> `modules`
左到右,左的包可以依赖于右侧的包,但右的包不能依赖于左侧的包。在同一级别的子包中,可以根据該级别的規則進行依
左到右,左的包可以依賴於右側的包,但右的包不能依賴於左側的包。在同一級別的子包中,可以根據該級別的規則進行依
**注意事**
**注意事**
為什么我们需要在`models`之外使用数据库事务?以及如何使用?
某些操作在数据库记录插入/更新/除失败时應該允许回滚
因此,服必須能建立数据库事务。以下是一些例:
為什麼我們需要在`models`之外使用資料庫事務?以及如何使用?
某些操作在資料庫記錄插入/更新/除失敗時應該允許回滾
因此,服必須能建立資料庫事務。以下是一些例:
```go
// services/repository/repository.go
@@ -70,8 +70,8 @@ func CreateXXXX() error {
}
```
`services`中**不應該**直接使用`db.GetEngine(ctx)`,而是應該在`models/`编写一个函数
如果該函数将在事中使用,請`context.Context`作為函的第一參數。
`services`中**不應該**直接使用`db.GetEngine(ctx)`,而是應該在`models/`編寫一個函數
如果該函數將在事中使用,請`context.Context`作為函的第一參數。
```go
// models/issues/issue.go
@@ -84,27 +84,27 @@ func UpdateIssue(ctx context.Context, repoID int64) error {
### 包名稱
對於顶层包,請使用复数作為包名,例如`services``models`,對於子包,請使用單,例如`services/user``models/repository`
對於頂層包,請使用複數作為包名,例如`services``models`,對於子包,請使用單,例如`services/user``models/repository`
### 导入别
### 導入別
有一些使用相同包名的包,例如`modules/user``models/user``services/user`当这些包在一 Go 文件中被导入时,很知道我使用的是哪包以及它是量名還是入名。因此,我们始终建议使用导入别名。為了与常见的驼峰命名法的包变量区分开,建使用**snake_case**作為导入别名的命名規則。
有一些使用相同包名的包,例如`modules/user``models/user``services/user`當這些包在一 Go 文件中被導入時,很知道我使用的是哪包以及它是量名還是入名。因此,我們始終建議使用導入別名。為了與常見的駝峰命名法的包變量區分開,建使用**snake_case**作為導入別名的命名規則。
例如:`import user_service "code.gitea.io/gitea/services/user"`
### 重要注意事
### 重要注意事
-不要`x.Update(exemplar)`,而有明`WHERE`子句:
- 这将导致表中的所有行都被使用 exemplar 的非零值進行更新,包括 ID。
- 通常應該`x.ID(id).Update(exemplar)`
- 如果在移過程中使用`x.Insert(exemplar)`向表中插入记录,而 ID 是预设的:
- 對於 MSSQL 體,你需要執行`` SET IDENTITY_INSERT `table` ON ``(否则迁移将失败
- 對於 PostgreSQL,你還需要更新 ID 序列,否则迁移将悄無息地通過,但后续的插入将失败
-不要`x.Update(exemplar)`,而有明`WHERE`子句:
- 這將導致表中的所有行都被使用 exemplar 的非零值進行更新,包括 ID。
- 通常應該`x.ID(id).Update(exemplar)`
- 如果在移過程中使用`x.Insert(exemplar)`向表中插入記錄,而 ID 是預設的:
- 對於 MSSQL 體,你需要執行`` SET IDENTITY_INSERT `table` ON ``(否則遷移將失敗
- 對於 PostgreSQL,你還需要更新 ID 序列,否則遷移將悄無息地通過,但後續的插入將失敗
`` SELECT setval('table_name_id_seq', COALESCE((SELECT MAX(id)+1 FROM `table_name`), 1), false) ``
### 未的任
### 未的任
目前,我正在進行一些重,以完成以下任
目前,我正在進行一些重,以完成以下任
- 正不符合規則的代码
- `models`中的文件太多了,所以我正在其中的一些移到子包`models/xxx`中。
- 由于它们依赖于`models`,因此應某些`modules`子包移到`services`中。
- 正不符合規則的程式碼
- `models`中的文件太多了,所以我正在其中的一些移到子包`models/xxx`中。
- 由於它們依賴於`models`,因此應某些`modules`子包移到`services`中。
@@ -6,114 +6,114 @@ aliases:
- /zh-tw/guidelines-frontend
---
# 前端开发指南
# 前端開發指南
## 背景
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
源文件可以在以下目錄中找到:
- **CSS 式** `web_src/css/`
- **CSS 式** `web_src/css/`
- **JavaScript 文件** `web_src/js/`
- **Vue 件** `web_src/js/components/`
- **Vue 件** `web_src/js/components/`
- **Go HTML 模板** `templates/`
## 通用准则
## 通用準則
们推荐使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
們推薦使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
## Gitea 特定准则
## Gitea 特定準則
1.功能(Fomantic-UI/jQuery 模組)應放在單的文件/目錄中。
2. HTML 的 id 和 class 應使用 kebab-case,最好包含 2-3 个与功能相关的关键詞。
3. 在 JavaScript 中使用的 HTML 的 id 和 class 應在整个项目中是唯一的,並且應包含 2-3 个与功能相关的关键詞。建在僅在 JavaScript 中使用的 class 中使用 `js-`
4. 不應覆框架提供的 class 的 CSS 式。始使用具有 2-3 个与功能相关的关键詞的新 class 名稱来覆盖框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以過使用`ctx.PageData["myModuleData"] = map[]{}`将复杂数据传递给前端,但不要将整个模型暴露前端,以避免泄露敏感数据
6. 简單页面和 SEO 相关的页面使用 Go HTML 模板渲染生成静态的 Fomantic-UI HTML 出。复杂页面可以使用 Vue3。
7.确变量類型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用语义化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果無法避免,添加注释解释為什需要它。
10. 避免在一事件监听器中混合不同的事件,先為每事件使用立的事件监听器。
11.使用自定义事件名稱前`ce-`
12.使用 Tailwind CSS,它可以`tw-`缀获得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-ellipsis`),Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免内联脚本和式,建议将 JS 代码放入 JS 文件中並使用 CSS 。如果内联脚本和式不可避免,請解無法避免的原因。
1.功能(Fomantic-UI/jQuery 模組)應放在單的文件/目錄中。
2. HTML 的 id 和 class 應使用 kebab-case,最好包含 2-3 個與功能相關的關鍵詞。
3. 在 JavaScript 中使用的 HTML 的 id 和 class 應在整個專案中是唯一的,並且應包含 2-3 個與功能相關的關鍵詞。建在僅在 JavaScript 中使用的 class 中使用 `js-`
4. 不應覆框架提供的 class 的 CSS 式。始使用具有 2-3 個與功能相關的關鍵詞的新 class 名稱來覆蓋框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以過使用`ctx.PageData["myModuleData"] = map[]{}`將複雜資料傳遞給前端,但不要將整個模型暴露前端,以避免泄露敏感資料
6. 簡單頁面和 SEO 相關的頁面使用 Go HTML 模板渲染生成靜態的 Fomantic-UI HTML 出。複雜頁面可以使用 Vue3。
7.確變量類型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用語義化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果無法避免,添加註釋解釋為什需要它。
10. 避免在一事件監聽器中混合不同的事件,先為每事件使用立的事件監聽器。
11.使用自事件名稱前`ce-`
12.使用 Tailwind CSS,它可以`tw-`綴獲得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-ellipsis`),Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免內聯腳本和式,建議將 JS 程式碼放入 JS 文件中並使用 CSS 。如果內聯腳本和式不可避免,請解無法避免的原因。
### 可访问性 / ARIA
### 可訪問性 / ARIA
史上,Gitea 大量使用了可访问性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可访问性(参见 `aria.md`),
但仍然存在许多问题需要大量的工作和时间来修复
史上,Gitea 大量使用了可訪問性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可訪問性(參見 `aria.md`),
但仍然存在許多問題需要大量的工作和時間來修復
### 框架使用
不建混合使用不同的框架,这会使代码难以维护
JavaScript 模組應遵循一主要框架,並遵循該框架的最佳实践
不建混合使用不同的框架,這會使程式碼難以維護
JavaScript 模組應遵循一主要框架,並遵循該框架的最佳實踐
荐的实現方式:
薦的實現方式:
- Vue + Vanilla JS
- Fomantic-UIjQuery
- htmx (部分面重新加其他静态组件)
- htmx (部分面重新加其他靜態元件)
- Vanilla JS
不推荐的实現方式:
不推薦的實現方式:
- Vue + Fomantic-UIjQuery
- jQuery + Vanilla JS
- htmx + 任何其他需要大量 JavaScript 代码或不必要的功能,如 htmx 本 (`hx-on`)
- htmx + 任何其他需要大量 JavaScript 程式碼或不必要的功能,如 htmx 本 (`hx-on`)
為了保持面一致,Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 進行單的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一个简單交互的例,其中應使用 htmx。如果您需要更高的反應性,請不要使用 htmx,請使用其他框架(Vue/Vanilla JS)。
但如果混合使用是必要的,並且代码设计良好且易于维护,也可以工作。
為了保持面一致,Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 進行單的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一個簡單交互的例,其中應使用 htmx。如果您需要更高的反應性,請不要使用 htmx,請使用其他框架(Vue/Vanilla JS)。
但如果混合使用是必要的,並且程式碼設計良好且易於維護,也可以工作。
### `async` 函
### `async` 函
只有当函数内部存在`await`用或返回`Promise`时,才将函数标记`async`
只有當函數內部存在`await`調用或返回`Promise`時,纔將函數標記`async`
不建使用`async`事件监听器,可能会导致问题
原因是`await`后的代码在事件分之外執行。
考:https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
不建使用`async`事件監聽器,可能會導致問題
原因是`await`後的程式碼在事件分之外執行。
考:https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
如果一事件监听器必須是`async`,應在任何`await`之前使用`e.preventDefault()`
议将其放在函的開頭。
如果一事件監聽器必須是`async`,應在任何`await`之前使用`e.preventDefault()`
議將其放在函的開頭。
如果我想在非步上下文中`async`
使用`const _promise = asyncFoo()`来告诉读
是有意為之的,我们想调用异步函並忽略 Promise。
一些 lint 規則和 IDE 也在未理返回的 Promise 时发出警告。
如果我想在非步上下文中調`async`
使用`const _promise = asyncFoo()`來告訴讀
是有意為之的,我們想調用異步函並忽略 Promise。
一些 lint 規則和 IDE 也在未理返回的 Promise 時發出警告。
### 获取数据
### 獲取資料
获取数据,請使用`modules/fetch.js`中的包装函数`GET``POST`等。他
接受容的`data`项,将自动设置 CSRF 令牌並返回
獲取資料,請使用`modules/fetch.js`中的包裝函數`GET``POST`等。他
接受容的`data`項,將自動設定 CSRF 令牌並返回
[Response](https://developer.mozilla.org/en-US/docs/Web/API/Response)。
### HTML 性和 dataset
### HTML 性和 dataset
禁止使用`dataset`,它的峰命名行為使得搜索属性变得困
然而,仍然存在一些特殊情,因此前的准则是:
禁止使用`dataset`,它的峰命名行為使得搜索屬性變得困
然而,仍然存在一些特殊情,因此前的準則是:
- 對於旧代码
- 對於舊程式碼
-`$.data()``$.attr()`
-极少数情况下,可以使用`$.data()`一些非字符串数据绑定到元素上,但烈不推使用。
-`$.data()``$.attr()`
-極少數情況下,可以使用`$.data()`一些非字符串資料綁定到元素上,但烈不推使用。
- 對於新代码
- 對於新程式碼
- 不應使用`node.dataset`,而應使用`node.getAttribute`
- 不要任何使用者数据绑定到 DOM 节点上,使用合适的设计模式描述节点和数据之间的关系
- 不要任何使用者資料綁定到 DOM 節點上,使用合適的設計模式描述節點和資料之間的關係
### 示/藏元素
### 示/藏元素
-在 Vue 件中使用`v-if``v-show`来显示/藏元素。
- Go 模板代码應使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 来显示/藏元素,請参阅`.tw-hidden`注释以获取更多详细信息
-在 Vue 件中使用`v-if``v-show`來顯示/藏元素。
- Go 模板程式碼應使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 來顯示/藏元素,請參閱`.tw-hidden`註釋以獲取更多詳細資訊
### Go HTML 模板中的式和
### Go HTML 模板中的式和
使用以下方式:
使用以下方式:
```html
<div
@@ -134,16 +134,16 @@ Gitea 使用一些补丁使 Fomantic UI 更具可访问性(参见 `aria.md`)
></div>
```
以使代码更易
以使程式碼更易
### 旧代码
### 舊程式碼
许多旧代码已经存在本文撰之前。建议重构旧代码以遵循指南。
許多舊程式碼已經存在本文撰之前。建議重構舊程式碼以遵循指南。
### Vue3 和 JSX
Gitea 現在正在使用 Vue3。我们决定不引入 JSX,以保持 HTML 代码和 JavaScript 代码分离
Gitea 現在正在使用 Vue3。我們決定不引入 JSX,以保持 HTML 程式碼和 JavaScript 程式碼分離
### UI
### UI
Gitea 使用一些自制的 UI 元素並自定义其他元素,以将它们更好地集成到通用 UI 方法中。当在开发模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些标准化 UI 例的面。
Gitea 使用一些自制的 UI 元素並自其他元素,以將它們更好地整合到通用 UI 方法中。當在開發模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些標準化 UI 例的面。
@@ -6,35 +6,35 @@ aliases:
- /zh-tw/guidelines-refactoring
---
# 重指南
# 重指南
## 背景
自 2014 年 2 月 12 日编写了第一行代码以来Gitea 已经发展成為一个庞大的项目
因此,代码库变得越越大。代码库越大,维护就越困
存在多過的機制,多框架混合在一起,一些遗留代码可能会导致错误並阻新功能的开发
為了使代码库更易于维护,使 Gitea 得更好,开发人员應牢使用現代機制来重构旧代码
自 2014 年 2 月 12 日編寫了第一行程式碼以來Gitea 已經發展成為一個龐大的專案
因此,程式碼庫變得越越大。程式碼庫越大,維護就越困
存在多過的機制,多框架混合在一起,一些遺留程式碼可能會導致錯誤並阻新功能的開發
為了使程式碼庫更易於維護,使 Gitea 得更好,開發人員應牢使用現代機制來重構舊程式碼
本文檔是关于重构代码库的指南集合。
本文件是關於重構程式碼庫的指南集合。
## 重构建议
## 重構建議
- 设计更多关于未来的内容,而不僅僅解决当前问题
- 少模糊性,减少冲突,提高可维护性。
- 描述重,例如:
- 為什需要重
- 如何解决旧问题
-构的优点/缺是什
- 只做必要的更改,量保留旧逻辑
- 引入一些中间步骤,使重更容易查,完整的重构计划可以在几个 PR 中完成。
- 如果存在分歧,應該請 TOC(技术监督委员会)参与决策。
- 添加必要的测试以确保重的正性。
-错误重构优先在里程碑的开始时進行,这样可以更容易地在發佈之前发現问题
- 設計更多關於未來的內容,而不僅僅解決當前問題
- 少模糊性,減少衝突,提高可維護性。
- 描述重,例如:
- 為什需要重
- 如何解決舊問題
-構的優點/缺是什
- 只做必要的更改,量保留舊邏輯
- 引入一些中間步驟,使重更容易查,完整的重構計劃可以在幾個 PR 中完成。
- 如果存在分歧,應該請 TOC(技術監督委員會)參與決策。
- 添加必要的測試以確保重的正性。
-錯誤重構優先在里程碑的開始時進行,這樣可以更容易地在發佈之前發現問題
## 查和合並建议
## 查和合併建議
-的 PR 不應該长时间保持打开状态(通常為 7 天),應快進行查。
-的 PR 應快合,不應被其他 PR 阻塞。
- 如果 TOC 没有异议,重的 PR 可以在 7 天后由一名核心成(非作者)批准后合並
- 如果最终结果良好,容忍一些不完美/临时的步
- 如果重是必要的,容忍一些回归错误,並快修复错误
-的 PR 不應該長時間保持打開狀態(通常為 7 天),應快進行查。
-的 PR 應快合,不應被其他 PR 阻塞。
- 如果 TOC 沒有異議,重的 PR 可以在 7 天后由一名核心成(非作者)批准後合併
- 如果最終結果良好,容忍一些不完美/臨時的步
- 如果重是必要的,容忍一些迴歸錯誤,並快修復錯誤
@@ -8,18 +8,18 @@ aliases:
# 本地化
Gitea 的本地化是通過我的[Crowdin 项目](https://crowdin.com/project/gitea)進行的。
Gitea 的本地化是通過我的[Crowdin 專案](https://crowdin.com/project/gitea)進行的。
對於**英语翻译**的更改,可以出 pull-request更改[语语言环](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合适的关键字。
對於**英語翻譯**的更改,可以出 pull-request更改[語語言環](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合適的關鍵字。
关对**非英**翻的更改,請参阅上面的 Crowdin 项目
關對**非英**翻的更改,請參閱上面的 Crowdin 專案
## 支持的语
## 支援的語
上述 Crowdin 项目中列出的任何言一旦翻了 25% 或更多都得到支
上述 Crowdin 專案中列出的任何言一旦翻了 25% 或更多都得到支
被接受,它在下一次 Crowdin 同步反映在主存儲库中,通常是在任何 PR 合並之后
被接受,它在下一次 Crowdin 同步反映在主儲存庫中,通常是在任何 PR 合併之後
在撰本文时,这意味更改的翻可能要到 Gitea 的下一版本才会出現。
在撰本文時,這意味更改的翻可能要到 Gitea 的下一版本纔會出現。
如果使用开发版本,在同步更改内容后,它應該在更新立即示。
如果使用開發版本,在同步更改內容後,它應該在更新立即示。
@@ -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:[email protected]/api/v1/users/your
## 使用 Sudo 方式請求 API
此 API 允管理借用其他使用者身份進行 API 請求。只需在請求中指定查參數 `sudo=` 或是指定 header 中的 `Sudo:` 為需要使用的使用者 username 即可。
此 API 允管理借用其他使用者身份進行 API 請求。只需在請求中指定查參數 `sudo=` 或是指定 header 中的 `Sudo:` 為需要使用的使用者 username 即可。
@@ -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 "[email protected]:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
@@ -92,86 +92,86 @@ git fetch --all --prune
或者:
```bash
# 為我的 fork 添加新的
# 為我的 fork 添加新的
git remote add "$FORK_NAME" "[email protected]:$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。
@@ -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}}
@@ -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)中找到這些介面
@@ -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) 以讀寫使用者的源。
@@ -6,266 +6,268 @@ aliases:
- /zh-tw/faq
---
# 常见问题
# 常見問題
面包含一些常见问题和答案。
面包含一些常見問題和答案。
更多帮助资源,請查看所有[持選项](help/support.md)。
更多幫助資源,請查看所有[援選項](help/support.md)。
## 1.x 和 1.x.x 下载之间的区别
## 1.x 和 1.x.x 下載之間的區別
以 1.7.x 版本為例。
**注意:**此例也适用于 Docker 像!
**注意:**此例也適用於 Docker 像!
在我的[载页](https://dl.gitea.com/gitea/)上,您看到一 1.7 目錄,以及 1.7.0、1.7.1、1.7.2、1.7.3、1.7.4、1.7.5 和 1.7.6 的目錄。
在我的[載頁](https://dl.gitea.com/gitea/)上,您看到一 1.7 目錄,以及 1.7.0、1.7.1、1.7.2、1.7.3、1.7.4、1.7.5 和 1.7.6 的目錄。
1.7 目錄和 1.7.0 目錄是**不同**的。1.7 目錄是在每个合並到[`release/v1.7`](https://github.com/go-gitea/gitea/tree/release/v1.7)分支的提交上建的。
1.7 目錄和 1.7.0 目錄是**不同**的。1.7 目錄是在每個合併到[`release/v1.7`](https://github.com/go-gitea/gitea/tree/release/v1.7)分支的提交上建的。
然而,1.7.0 目錄是在建立[`v1.7.0`](https://github.com/go-gitea/gitea/releases/tag/v1.7.0)標籤建立的建。
然而,1.7.0 目錄是在建立[`v1.7.0`](https://github.com/go-gitea/gitea/releases/tag/v1.7.0)標籤建立的建。
意味 1.x 的下载会随着提交合到各自的分支而改变(将其视為每版本的單的“main”分支)。
意味 1.x 的下載會隨著提交合到各自的分支而改變(將其視為每版本的單的“main”分支)。
另一方面,1.x.x 的下應該永远不会改变
另一方面,1.x.x 的下應該永遠不會改變
## 如何 Gogs/GitHub 等移到 Gitea
## 如何 Gogs/GitHub 等移到 Gitea
Gogs 移到 Gitea
Gogs 移到 Gitea
- [Gogs 版本 0.11.46.0418](https://github.com/go-gitea/gitea/issues/4286)
GitHub 移到 Gitea,您可以使用 Gitea 置的移表單。
GitHub 移到 Gitea,您可以使用 Gitea 置的移表單。
為了迁移诸如问题、拉取請求等项目,您需要至少入您的使用者名。
為了遷移諸如問題、拉取請求等專案,您需要至少入您的使用者名
[Example (requires login)](https://demo.gitea.com/repo/migrate)
GitLab 移到 Gitea,您可以使用这个非关联的工具:
GitLab 移到 Gitea,您可以使用這個非關聯的工具:
https://github.com/loganinak/MigrateGitlabToGogs
## Gitea 存儲文件的位置
<a id="where-does-gitea-store-what-file"></a>
<a id="Gitea儲存文件的位置"></a>
## Gitea 儲存文件的位置
- _`AppWorkPath`_
- `--work-path`标志
- 或者环境变`GITEA_WORK_DIR`
- 或者在构建时设置的内置值
- `--work-path`標誌
- 或者環境變`GITEA_WORK_DIR`
- 或者在構建時設定的內置值
- 或者包含 Gitea 二進制文件的目錄
- `%(APP_DATA_PATH)`数据库、索引器等的默认路径
- `%(APP_DATA_PATH)`資料庫、索引器等的預設路徑
- `app.ini`中的`APP_DATA_PATH`
- 或者*`AppWorkPath`*`/data`
- _`CustomPath`_(自定义模板)
- `--custom-path`标志
- 或者环境变`GITEA_CUSTOM`
- 或者在构建时设置的内置值
- _`CustomPath`_(自模板)
- `--custom-path`標誌
- 或者環境變`GITEA_CUSTOM`
- 或者在構建時設定的內置值
- 或者*`AppWorkPath`*`/custom`
- HomeDir
- Unix环境变`HOME`
- Windows环境变`USERPROFILE`,或者环境变`HOMEDRIVE`+`HOMEPATH`
- Unix環境變`HOME`
- Windows環境變`USERPROFILE`,或者環境變`HOMEDRIVE`+`HOMEPATH`
- RepoRootPath
- `app.ini`中\[repository]部分的`ROOT`(如果是绝对路径
-*`AppWorkPath`*`/ROOT`(如果`app.ini`中\[repository]部分的`ROOT`是相对路径
- 默认值為`%(APP_DATA_PATH)/gitea-repositories`
- INI配置文件)
- `--config`标志
- 或者在构建时设置的可能置值
- `app.ini`中\[repository]部分的`ROOT`(如果是絕對路徑
-*`AppWorkPath`*`/ROOT`(如果`app.ini`中\[repository]部分的`ROOT`是相對路徑
- 預設值為`%(APP_DATA_PATH)/gitea-repositories`
- INI設定文件)
- `--config`標誌
- 或者在構建時設定的可能置值
- 或者 _`CustomPath`_`/conf/app.ini`
- SQLite 数据库
- SQLite 資料庫
- app.ini 中 database 部分的 PATH
- 或者`%(APP_DATA_PATH)/gitea.db`
## 看不到克隆 URL 或克隆 URL 不正
## 看不到克隆 URL 或克隆 URL 不正
几个地方可能会导致显示不正
幾個地方可能會導致顯示不正
1. 如果使用反向代理,請保按照[反向代理指南](../administration/reverse-proxies.md)中的正确说明進行设置
2. 保在`app.ini``server`部分中正确设置`ROOT_URL`
1. 如果使用反向代理,請保按照[反向代理指南](../administration/reverse-proxies.md)中的正確說明進行設定
2. 保在`app.ini``server`部分中正確設定`ROOT_URL`
如果某些克隆選项未显示(HTTP/S 或 SSH),可以在`app.ini中`
如果某些克隆選項未顯示(HTTP/S 或 SSH),可以在`app.ini中`
- `DISABLE_HTTP_GIT`: 如果為 true, 将会没有 HTTP/HTTPS
- `DISABLE_SSH`: 如果為 true, 将会没有 SSH
- `SSH_EXPOSE_ANONYMOUS`: 如果為 false, SSH 链接将会对匿名使用者
- `DISABLE_HTTP_GIT`: 如果為 true, 將會沒有 HTTP/HTTPS
- `DISABLE_SSH`: 如果為 true, 將會沒有 SSH
- `SSH_EXPOSE_ANONYMOUS`: 如果為 false, SSH 鏈接將會對匿名使用者
## 文件上传失败413 Request Entity Too Large
## 文件上傳失敗413 Request Entity Too Large
反向代理限制文件上大小时,会出現此错误
反向代理限制文件上大小時,會出現此錯誤
使用 nginx 解决此问题,請参阅[反向代理指南](../administration/reverse-proxies.md)。
使用 nginx 解決此問題,請參閱[反向代理指南](../administration/reverse-proxies.md)。
## 自定义模板無法加载或运行错误
## 自模板無法加載或運行錯誤
Gitea 的自定义模板必須其添加到正的位置,否 Gitea 無法找到並使用自定义模板。
Gitea 的自模板必須其添加到正的位置,否 Gitea 無法找到並使用自模板。
模板的正确路径應該相對於`CustomPath`
模板的正確路徑應該相對於`CustomPath`
1. 要找到`CustomPath`,請在站管理 -> 配置 中查找自定义文件根路
1. 要找到`CustomPath`,請在站管理 -> 設定 中查找自文件根路
如果找不到,請尝试`echo $GITEA_CUSTOM`
如果找不到,請嘗試`echo $GITEA_CUSTOM`
2. 如果仍然找不到,默认值可以被[计算](faq.md#Gitea存儲文件的位置)
3. 如果仍然找不到路径,则可以考[定义 Gitea](../administration/customizing-gitea.md)面,模板添加到正的位置。
2. 如果仍然找不到,預設值可以被計算
3. 如果仍然找不到路徑,則可以考[ Gitea](../administration/customizing-gitea.md)面,模板添加到正的位置。
## Gitea 是否有"GitHub/GitLab Pages"功能?
Gitea 不提供置的 Pages 服器。您需要一个专用的域名提供静态页面,以避免 CSRF 安全风险
Gitea 不提供置的 Pages 服器。您需要一個專用的域名提供靜態頁面,以避免 CSRF 安全風險
對於單的用法,您可以使用反向代理来重写和提供 Gitea 的原始文件 URL 中的静态内容。
對於單的用法,您可以使用反向代理來重寫和提供 Gitea 的原始文件 URL 中的靜態內容。
還有一些已可用的第三方服,比如立[pages server](https://codeberg.org/Codeberg/pages-server)的或[caddy plugin](https://github.com/42wim/caddy-gitea),可以提供所需的功能。
還有一些已可用的第三方服,比如立[pages server](https://codeberg.org/Codeberg/pages-server)的或[caddy plugin](https://github.com/42wim/caddy-gitea),可以提供所需的功能。
## 活使用者禁止登入使用者
## 活使用者禁止登入使用者
在 Gitea 中,"活使用者"是指通過电子邮件激活其帳戶的使用者。
在 Gitea 中,"活使用者"是指通過電子郵件激活其帳戶的使用者。
"禁止登入使用者"是指不允再登入到 Gitea 的使用者。
"禁止登入使用者"是指不允再登入到 Gitea 的使用者。
## 设置日志记录
## 設定日誌記錄
- [官方文](../administration/logging-config.md)
- [官方文](../administration/logging-config.md)
## 什是 Swagger
## 什是 Swagger
[Swagger](https://swagger.io/) 是 Gitea 用其 API 文的工具。
[Swagger](https://swagger.io/) 是 Gitea 用其 API 文的工具。
所有 Gitea 例都有置的 API,無法完全禁用它。
但是,您可以在 app.ini 的 api 部分 ENABLE_SWAGGER 设置為 false,以禁用其文檔显示。
更多信息,請参阅 Gitea 的[API 文](development/api-usage.md)。
所有 Gitea 例都有置的 API,無法完全禁用它。
但是,您可以在 app.ini 的 api 部分 ENABLE_SWAGGER 設定為 false,以禁用其文件顯示。
更多資訊,請參閱 Gitea 的[API 文](development/api-usage.md)。
您可以在上查看最新的 API(例如)https://gitea.com/api/swagger
您還可以在上查看`swagger.json`文件的例 https://gitea.com/swagger.v1.json
您還可以在上查看`swagger.json`文件的例 https://gitea.com/swagger.v1.json
## 调整服务器用公共/私有使用
## 調整伺服器用公共/私有使用
### 防止垃圾邮件发送者
### 防止垃圾郵件發送者
有多方法可以合使用防止垃圾邮件发送者:
有多方法可以合使用防止垃圾郵件發送者:
1. 通過设置电子邮件域名的白名單或黑名單。
2. 通過设置一些域名或者 OpenID 白名單(下文)。
3. 在您的`app.ini``ENABLE_CAPTCHA`设置`true`,並正确配置`RECAPTCHA_SECRET``RECAPTCHA_SITEKEY`
4. `DISABLE_REGISTRATION`设置`true`,並通過 [CLI](../administration/command-line.md)、[API](development/api-usage.md) 或 Gitea 的管理面建立新使用者。
1. 通過設定電子郵件域名的白名單或黑名單。
2. 通過設定一些域名或者 OpenID 白名單(下文)。
3. 在您的`app.ini``ENABLE_CAPTCHA`設定`true`,並正確設定`RECAPTCHA_SECRET``RECAPTCHA_SITEKEY`
4. `DISABLE_REGISTRATION`設定`true`,並通過 [CLI](../administration/command-line.md)、[API](development/api-usage.md) 或 Gitea 的管理面建立新使用者。
### 僅允/阻止特定的电子邮件域名
### 僅允/阻止特定的電子郵件域名
您可以在`app.ini`中的`[service]`下的配置`EMAIL_DOMAIN_WHITELIST``EMAIL_DOMAIN_BLOCKLIST`
您可以在`app.ini`中的`[service]`下的設定`EMAIL_DOMAIN_WHITELIST``EMAIL_DOMAIN_BLOCKLIST`
### 僅允/阻止特定的 OpenID 提供商
### 僅允/阻止特定的 OpenID 提供商
您可以在`app.ini``[openid]`配置`WHITELISTED_URI``BLACKLISTED_URIS`
您可以在`app.ini``[openid]`設定`WHITELISTED_URI``BLACKLISTED_URIS`
**注意** 白名單先,如果白名單非空,忽略黑名單。
**注意** 白名單先,如果白名單非空,忽略黑名單。
### 僅允發佈问题的使用者
### 僅允發佈問題的使用者
目前实現这一点的方法是建立/修改一具有最大存放庫建立限制為 0 的使用者。
目前實現這一點的方法是建立/修改一具有最大存放庫建立限制為 0 的使用者。
### 受限制的使用者
受限制的使用者僅能访问其組織/团队成员和协作所在的容的子集,而忽略組織/存放庫等的公共标志
受限制的使用者僅能訪問其組織/團隊成員和協作所在的容的子集,而忽略組織/存放庫等的公共標誌
例用例:一公司行一需要登入的 Gitea 例。大多存放庫是公的(所有同事都可以访问/浏览)。
例用例:一公司行一需要登入的 Gitea 例。大多存放庫是公的(所有同事都可以訪問/瀏覽)。
在某些情下,某个客户或第三方需要访问特定的存放庫,並且只能访问該存放庫。通過将此类客户帳戶设置為受限制帳戶,並使用团队成员身份和/或协作来授予所需的任何访问权限,可以單地实現这一点,而無需使所有容都為私有。
在某些情下,某個客戶或第三方需要訪問特定的存放庫,並且只能訪問該存放庫。通過將此類客戶帳戶設定為受限制帳戶,並使用團隊成員身份和/或協作來授予所需的任何存取權限,可以單地實現這一點,而無需使所有容都為私有。
### 用 Fail2ban
### 用 Fail2ban
使用 [Fail2Ban](../administration/fail2ban-setup.md) 监视並阻止基于日志模式的自登入尝试或其他意行為。
使用 [Fail2Ban](../administration/fail2ban-setup.md) 監視並阻止基於日誌模式的自登入嘗試或其他意行為。
## SSHD vs 建 SSH
## SSHD vs 建 SSH
SSHD 是大多 Unix 系统上内建的 SSH 服器。
SSHD 是大多 Unix 系統上內建的 SSH 服器。
Gitea 還提供了自己的 SSH 服器,用在 SSHD 不可用使用。
Gitea 還提供了自己的 SSH 服器,用在 SSHD 不可用使用。
## Gitea 运行缓
## Gitea 運行緩
致此问题的最常原因是加载联合头像。
致此問題的最常原因是加載聯合頭像。
您可以過在`app.ini``ENABLE_FEDERATED_AVATAR`设置`false`来关闭此功能。
您可以過在`app.ini``ENABLE_FEDERATED_AVATAR`設定`false`來關閉此功能。
還有一可能需要更改的選是在`app.ini``DISABLE_GRAVATAR`设置`true`
還有一可能需要更改的選是在`app.ini``DISABLE_GRAVATAR`設定`true`
## 無法建立存放庫/文件
保 Gitea 具有足够的权限来写入其主目錄和数据目錄。
保 Gitea 具有足夠的權限來寫入其主目錄和資料目錄。
参见[AppDataPath 和 RepoRootPath](faq.md#Gitea存儲文件的位置)
參見AppDataPath 和 RepoRootPath
**适用于 Arch 使用者的注意事**在撰本文Arch 軟體包的 systemd 文件包含了以下行:
**適用於 Arch 使用者的注意事**在撰本文Arch 套件的 systemd 文件包含了以下行:
`ReadWritePaths=/etc/gitea/app.ini`
这将使得 Gitea 無法入其他路
這將使得 Gitea 無法入其他路
## 翻不正/如何添加更多翻
## 翻不正/如何添加更多翻
们当前的翻是在我的[Crowdin 项目](https://crowdin.com/project/gitea)上包進行的
們當前的翻是在我的[Crowdin 專案](https://crowdin.com/project/gitea)上包進行的
您想要更改翻還是添加新的翻,都需要在 Crowdin 集成中進行,因為所有翻译都会被 CI 覆
您想要更改翻還是添加新的翻,都需要在 Crowdin 整合中進行,因為所有翻譯都會被 CI 覆
## 推送子/ Webhook / Actions 未
## 推送子/ Webhook / Actions 未
如果您可以推送但無法在主页仪表板上看到推送活,或者推送不触发 Webhook 和 Actions,可能是 git 子不工作而致的。
如果您可以推送但無法在主頁儀表板上看到推送活,或者推送不觸發 Webhook 和 Actions,可能是 git 子不工作而致的。
可能是由以下原因:
可能是由以下原因:
1. Git 子不同步:在站管理面板上行“重新同步所有存放庫的 pre-receive、update 和 post-receive 子”
2. Git 存放庫(和子)儲在一些不支持脚本執行的文件系上(例如由 NAS 挂载),請保文件系统支持`chmod a+x any-script`
3. 如果您使用的是 Docker,請保 Docker Server(而不是客端)的版本 >= 20.10.6
1. Git 子不同步:在站管理面板上行“重新同步所有存放庫的 pre-receive、update 和 post-receive 子”
2. Git 存放庫(和子)儲在一些不支援腳本執行的文件系上(例如由 NAS 掛載),請保文件系統支援`chmod a+x any-script`
3. 如果您使用的是 Docker,請保 Docker Server(而不是客端)的版本 >= 20.10.6
## SSH 问题
## SSH 問題
如果無法通過`ssh`访问存放庫,但`https`正常工作,請考以下情
如果無法通過`ssh`訪問存放庫,但`https`正常工作,請考以下情
首先,請保您可以過 SSH 访问 Gitea。
首先,請保您可以過 SSH 訪問 Gitea。
`ssh [email protected]`
如果接成功,您應該收到以下错误消息:
如果接成功,您應該收到以下錯誤消息:
```
Hi there, You've successfully authenticated, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
```
如果您收到以上消息但仍然接成功,意味您的 SSH 密**有**由 Gitea 管理。意味着钩子不会运行,在其他一些潜在问题中也包括在
如果您收到以上消息但仍然接成功,意味您的 SSH 密**有**由 Gitea 管理。意味著鉤子不會運行,在其他一些潛在問題中也包括在
如果您無法接,可能是因為您的 SSH 密在本地配置不正
这是针对 SSH 而不是 Gitea 的问题,因此在此不涉及。
如果您無法接,可能是因為您的 SSH 密在本地設定不正
這是針對 SSH 而不是 Gitea 的問題,因此在此不涉及。
### SSH 常见错误
### SSH 常見錯誤
```
Permission denied (publickey).
fatal: Could not read from remote repository.
```
错误表示服务器拒登入尝试
查以下事
錯誤表示伺服器拒登入嘗試
查以下事
- 在客端:
- 保公和私已添加到正的 Gitea 使用者。
- 确保远程 URL 中有任何问题。特是,請保 ∂
Git 使用者(@ 之前的部分)的名稱拼写正确
- 保客户端机器上的公和私钥正确無误
- 在服器上:
- 在客端:
- 保公和私已添加到正的 Gitea 使用者。
- 確保遠程 URL 中有任何問題。特是,請保 ∂
Git 使用者(@ 之前的部分)的名稱拼寫正確
- 保客戶端機器上的公和私鑰正確無誤
-服器上:
- 确保存儲库存在並且命名正
- 查系使用者主目錄中的 `.ssh` 目錄的限。
- 驗證正的公是否已添加到 `.ssh/authorized_keys` 中。
- 確保儲存庫存在並且命名正
- 查系使用者主目錄中的 `.ssh` 目錄的限。
- 驗證正的公是否已添加到 `.ssh/authorized_keys` 中。
尝试在 Gitea 管理面板上
嘗試在 Gitea 管理面板上
`Rewrite '.ssh/authorized_keys' file (for Gitea SSH keys)`
- 查看 Gitea 日
- 查看 /var/log/auth(或似的文件)。
- 检查存儲库的权限。
- 查看 Gitea 日
- 查看 /var/log/auth(或似的文件)。
- 檢查儲存庫的權限。
以下是一个示例,其中缺少公共 SSH 密
認證成功,但是其他设置导致 SSH 無法访问正确
存儲库
以下是一個範例,其中缺少公共 SSH 密
認證成功,但是其他設定導致 SSH 無法訪問正確
儲存庫
```
fatal: Could not read from remote repository.
@@ -274,34 +276,34 @@ Please make sure you have the correct access rights
and the repository exists.
```
这种情况下,請查以下设置
這種情況下,請查以下設定
- 在服器上:
- `git`使用者设置了可用的 shell
-服器上:
- `git`使用者設定了可用的 shell
- 使用`getent passwd git | cut -d: -f7`進行驗證
- 可以使用`usermod``chsh`進行修改。
- `.ssh/authorized_keys`中的`gitea serv`命令使用
确的配置文件。
- `.ssh/authorized_keys`中的`gitea serv`命令使用
確的設定文件。
## 迁移带有標籤的存儲库后缺失發佈版本
## 遷移帶有標籤的儲存庫後缺失發佈版本
迁移带有所有標籤的存儲库,您需要執行两个操作:
遷移帶有所有標籤的儲存庫,您需要執行兩個操作:
- 推送標籤到存儲库
- 推送標籤到儲存庫
```
git push --tags
```
- 在 Gitea 中重新同步所有存儲库的標籤:
- 在 Gitea 中重新同步所有儲存庫的標籤:
```
gitea admin repo-sync-releases
```
## LFS 问题
## LFS 問題
针对涉及 LFS 数据上传的问题
針對涉及 LFS 資料上傳的問題
```
batch response: Authentication required: Authorization error: <GITEA_LFS_URL>/info/lfs/objects/batch
@@ -309,99 +311,99 @@ Check that you have proper access to the repository
error: failed to push some refs to '<GIT_REPO_URL>'
```
`app.ini`文件中的`LFS_HTTP_AUTH_EXPIRY`值。
`app.ini`文件中的`LFS_HTTP_AUTH_EXPIRY`值。
默认情况下,LFS 令牌在 20 分钟后過期。如果您的接速度慢或文件大(或者都是),可能無法在时间限制完成上
預設情況下,LFS 令牌在 20 分鐘後過期。如果您的接速度慢或文件大(或者都是),可能無法在時間限制完成上
您可以此值设置`60m``120m`
您可以此值設定`60m``120m`
## 如何在启动 Gitea 之前建立使用者
## 如何在啟動 Gitea 之前建立使用者
Gitea 提供了一子命令`gitea migrate`初始化数据库,然您可以使用[管理 CLI 命令](../administration/command-line.md#admin)像正常情下添加使用者。
Gitea 提供了一子命令`gitea migrate`初始化資料庫,然您可以使用[管理 CLI 命令](../administration/command-line.md#admin)像正常情下添加使用者。
## 如何用密碼重置
## 如何用密碼重置
有密碼重置的设置。当配置了[件服](../administration/email-setup.md),密碼重置将自动启用;否则将被禁用。
有密碼重置的設定。當設定了[件服](../administration/email-setup.md),密碼重置將自動啟用;否則將被禁用。
## 如何更改使用者的密碼
- 作為管理,您可以更改任何使用者的密碼(並可選择强制其在下次登入更改密碼)...
- 到您的`站管理 -> 使用者账户`面並编辑使用者。
- 作為管理,您可以更改任何使用者的密碼(並可選擇強制其在下次登入更改密碼)...
- 到您的`站管理 -> 使用者賬戶`面並編輯使用者。
- 使用[管理 CLI 命令](../administration/command-line.md#admin)。
請注意,大多命令還需要一[局标志](../administration/command-line.md#全局選项)指向正确的配置
請注意,大多命令還需要一[域標誌](../administration/command-line.md#全域選項)指向正確的設定
- 作為**使用者**,您可以更改密碼...
- 在您的账户`设置 -> 账户`面(此方法**需要**您知道前密碼)。
- 使用`忘密碼`接。
- 在您的帳號`設定 -> 帳號`面(此方法**需要**您知道前密碼)。
- 使用`忘密碼`接。
如果`忘密碼/账户恢复`面被禁用,請联系管理员配置[件服](../administration/email-setup.md)。
如果`忘密碼/賬戶恢復`面被禁用,請聯繫管理員設定[件服](../administration/email-setup.md)。
## 為什我的 Markdown 显示错误
## 為什我的 Markdown 顯示錯誤
在 Gitea 版本 `1.11` 中,我们转换為使用[goldmark](https://github.com/yuin/goldmark)進行 Markdown 渲染,它符合[CommonMark](https://commonmark.org/)标准
在 Gitea 版本 `1.11` 中,我們轉換為使用[goldmark](https://github.com/yuin/goldmark)進行 Markdown 渲染,它符合[CommonMark](https://commonmark.org/)標準
如果您在版本`1.11`之前的 Markdown 正常工作,但在升级后無法正常工作,請仔细阅读 CommonMark 规范,看看问题是由错误還是非容的法引起的。
如果您在版本`1.11`之前的 Markdown 正常工作,但在升級後無法正常工作,請仔細閱讀 CommonMark 規範,看看問題是由錯誤還是非容的法引起的。
如果是者,通常规范中会列出一符合标准的替代方法。
如果是者,通常規範中會列出一符合標準的替代方法。
## 使用 MySQL 進行升级时出現的错误
## 使用 MySQL 進行升級時出現的錯誤
如果在使用 MySQL 升 Gitea 收到以下错误
如果在使用 MySQL 升 Gitea 收到以下錯誤
> `ORM engine initialization failed: migrate: do migrate: Error: 1118: Row size too large...`
`gitea doctor convert`对数据库中的每个表运`ALTER TABLE table_name ROW_FORMAT=dynamic;`
`gitea doctor convert`對資料庫中的每個表運`ALTER TABLE table_name ROW_FORMAT=dynamic;`
潜在问题是默认行格式分配给每个表的索引空
潛在問題是預設行格式分配給每個表的索引空
太小。Gitea 要求其表的`ROWFORMAT``DYNAMIC`
如果收到包含`Error 1071: Specified key was too long; max key length is 1000 bytes...`
错误行,表示您正在尝试在使用 ISAM 引擎的表上行 Gitea。管在先前版本的 Gitea 中可能是巧能工作的,但它未得到官方支
您必須使用 InnoDB。您應該对数据库中的每个表运`ALTER TABLE table_name ENGINE=InnoDB;`
錯誤行,表示您正在嘗試在使用 ISAM 引擎的表上行 Gitea。管在先前版本的 Gitea 中可能是巧能工作的,但它未得到官方支
您必須使用 InnoDB。您應該對資料庫中的每個表運`ALTER TABLE table_name ENGINE=InnoDB;`
## 為什 Emoji 只显示占位符或單色
## 為什 Emoji 只顯示佔位符或單色
Gitea 需要系统或浏览器安裝其中一受支的 Emoji 字體,例如 Apple Color Emoji、Segoe UI Emoji、Segoe UI Symbol、Noto Color Emoji 和 Twemoji Mozilla。通常,操作系應該已提供了其中一字體,但特是在 Linux 上,可能需要手安裝它
Gitea 需要系統或瀏覽器安裝其中一受支的 Emoji 字體,例如 Apple Color Emoji、Segoe UI Emoji、Segoe UI Symbol、Noto Color Emoji 和 Twemoji Mozilla。通常,操作系應該已提供了其中一字體,但特是在 Linux 上,可能需要手安裝它
## SystemD 和 Docker 上的标准输出日
## SystemD 和 Docker 上的標準輸出日
SystemD 上的标准输出默认会写入日志记录中。您可以尝试使用 `journalctl``journalctl -u gitea``journalctl <path-to-gitea-binary>`查看。
SystemD 上的標準輸出預設會寫入日誌記錄中。您可以嘗試使用 `journalctl``journalctl -u gitea``journalctl <path-to-gitea-binary>`查看。
似地,Docker 上的标准输出可以使用`docker logs <container>`查看。
似地,Docker 上的標準輸出可以使用`docker logs <container>`查看。
要收集日以進行助和问题报告,請参阅[持選项](help/support.md)。
要收集日以進行助和問題報告,請參閱[援選項](help/support.md)。
## 初始日志记录
## 初始日誌記錄
在 Gitea 读取配置文件並设置其日志记录之前,它会将一些内容记录到标准输出,以帮助调试日志记录無法工作的情
在 Gitea 讀取設定文件並設定其日誌記錄之前,它會將一些內容記錄到標準輸出,以幫助調試日誌記錄無法工作的情
您可以通過设置`--quiet``-q`项来停止此日志记录。請注意,这只会在 Gitea 设置自己的日志记录之前停止日志记录
您可以透過設定`--quiet``-q`項來停止此日誌記錄。請注意,這只會在 Gitea 設定自己的日誌記錄之前停止日誌記錄
如果您告了错误或问题,必須提供这些信息以恢初始日志记录
如果您告了錯誤或問題,必須提供這些資訊以恢初始日誌記錄
只有在完全配置了所有容之,您才應該设置此選
只有在完全設定了所有容之,您才應該設定此選
## 在数据库启动期间出現有关结构默认值的警告
## 在資料庫啟動期間出現有關結構預設值的警告
,在移過程中,列和默认值可能在数据库架构中保持不
可能会导致警告,例如:
,在移過程中,列和預設值可能在資料庫架構中保持不
可能會導致警告,例如:
```
2020/08/02 11:32:29 ...rm/session_schema.go:360:Sync() [W] Table user Column keep_activity_private db default is , struct default is 0
```
可以安全地忽略些警告,但您可以通過让 Gitea 重新建立些表停止些警告,使用以下命令:
可以安全地忽略些警告,但您可以透過讓 Gitea 重新建立些表停止些警告,使用以下命令:
```
gitea doctor recreate-table user
```
这将导致 Gitea 重新建立使用者表並将旧数据复制到新表中,
並正确设置默认值。
這將導致 Gitea 重新建立使用者表並將舊資料複製到新表中,
並正確設定預設值。
您可以使用以下命令要求 Gitea 重新建立多表:
您可以使用以下命令要求 Gitea 重新建立多表:
```
gitea doctor recreate-table table1 table2 ...
@@ -413,21 +415,21 @@ gitea doctor recreate-table table1 table2 ...
gitea doctor recreate-table
```
运行这些命令之前,烈建议您备份数据库
運行這些命令之前,烈建議您備份資料庫
## 為什查看文件时制表符/缩進显示错误
## 為什查看文件時製表符/縮進顯示錯誤
如果您正在使用 Cloudflare,請在表板中关闭自动缩小選
如果您正在使用 Cloudflare,請在表板中關閉自動縮小選
`Speed` -> `Optimization` -> 在 `Auto-Minify` 设置中取消選中 `HTML`
`Speed` -> `Optimization` -> 在 `Auto-Minify` 設定中取消選中 `HTML`
## 如何硬碟采用存儲库
## 如何硬碟採用儲存庫
- 您的(裸)存儲库添加到正的位置,即您的配置所在的地方(`repository.ROOT`),保它们位于正确的布`<REPO_ROOT>/[user]/[repo].git`
- **注意:**目錄名必須為小
- 您還可以在`<ROOT_URL>/admin/config`检查存儲库根路
- 保存在要采用存儲库的使用者/組織。
- 作為管理员,转`<ROOT_URL>/admin/repos/unadopted`並搜索。
- 使用者也可以通過配置[`ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`](../administration/config-cheat-sheet.md#存放庫) 获得类似的限。
- 如果上述步都正執行,您應該能够選择要采用的存儲库
- 如果有找到存儲库,請用[调试日志记录](../administration/config-cheat-sheet.md#存放庫)以查是否有特定错误
- 您的(裸)儲存庫添加到正的位置,即您的設定所在的地方(`repository.ROOT`),保它們位於正確的佈`<REPO_ROOT>/[user]/[repo].git`
- **注意:**目錄名必須為小
- 您還可以在`<ROOT_URL>/admin/config`檢查儲存庫根路
- 保存在要採用儲存庫的使用者/組織。
- 作為管理員,轉`<ROOT_URL>/admin/repos/unadopted`並搜索。
- 使用者也可以透過設定[`ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`](../administration/config-cheat-sheet.md#存放庫-repository) 獲得類似的限。
- 如果上述步都正執行,您應該能夠選擇要採用的儲存庫
- 如果有找到儲存庫,請用[調試日誌記錄](../administration/config-cheat-sheet.md#存放庫-repository)以查是否有特定錯誤
@@ -6,64 +6,64 @@ aliases:
- /zh-tw/seek-help
---
# 支持選项
# 支援選項
- [费商业支持](https://about.gitea.com/)
- [費商業支援](https://about.gitea.com/)
- [Discord](https://discord.gg/Gitea)
- [论坛](https://forum.gitea.com/)
- [論壇](https://forum.gitea.com/)
- [Matrix](https://matrix.to/#/#gitea-space:matrix.org)
- 注意:大多 Matrix 道都 Discord 中的对應频道桥接,可能在接過程中出現一定程度的不定性。
- 中文支
- [Discourse 中文分](https://forum.gitea.com/c/5-category/5)
- 注意:大多 Matrix 道都 Discord 中的對應頻道橋接,可能在接過程中出現一定程度的不定性。
- 中文支
- [Discourse 中文分](https://forum.gitea.com/c/5-category/5)
- QQ 群 328432459
# Bug
# Bug
如果您現了 Bug,請在 GitHub 上 [建立一个问题](https://github.com/go-gitea/gitea/issues)。
如果您現了 Bug,請在 GitHub 上 [建立一個問題](https://github.com/go-gitea/gitea/issues)。
**注意:** 在請求支持时,可能需要准备以下信息,以便助者得所需的所有信息
**注意:** 在請求支援時,可能需要準備以下資訊,以便助者得所需的所有資訊
1. 您的 `app.ini`任何敏感数据進行必要的清除)。
2. 您看到的任何错误消息。
3. Gitea 日以及与情况相关的所有其他日
- 收集 `trace` / `debug` 级别的日更有用(参见下一)。
- 在使用 systemd ,使用 `journalctl --lines 1000 --unit gitea` 收集日
- 在使用 Docker ,使用 `docker logs --tail 1000 <gitea-container>` 收集日
4. 可重現的步,以便他人能更快速、更容易地重現和理解问题
- [demo.gitea.com](https://demo.gitea.com) 可用重現问题
5. 如果遇到慢速/起/死锁等问题,請在出現问题时报告堆栈跟踪
到 "Site Admin" -> "Monitoring" -> "Stacktrace" -> "Download diagnosis report"。
1. 您的 `app.ini`任何敏感資料進行必要的清除)。
2. 您看到的任何錯誤消息。
3. Gitea 日以及與情況相關的所有其他日
- 收集 `trace` / `debug` 級別的日更有用(參見下一)。
- 在使用 systemd ,使用 `journalctl --lines 1000 --unit gitea` 收集日
- 在使用 Docker ,使用 `docker logs --tail 1000 <gitea-container>` 收集日
4. 可重現的步,以便他人能更快速、更容易地重現和理解問題
- [demo.gitea.com](https://demo.gitea.com) 可用重現問題
5. 如果遇到慢速/起/死鎖等問題,請在出現問題時報告堆棧跟蹤
到 "Site Admin" -> "Monitoring" -> "Stacktrace" -> "Download diagnosis report"。
# 高 Bug 告提示
# 高 Bug 告提示
## 更多日志的配置選项
## 更多日誌的設定選項
默认情况下,日`info` 级别输出到控制
如果您需要设置日志级别和/或文件中收集日
您只需以下配置复制到您的 `app.ini` 中(除所有其他 `[log]` 部分),
后您将在 Gitea 的日目錄中找到 `*.log` 文件(默认`%(GITEA_WORK_DIR)/log`)。
預設情況下,日`info` 級別輸出到控制
如果您需要設定日誌級別和/或文件中收集日
您只需以下設定複製到您的 `app.ini` 中(除所有其他 `[log]` 部分),
後您將在 Gitea 的日目錄中找到 `*.log` 文件(預設`%(GITEA_WORK_DIR)/log`)。
```ini
; 要示所有 SQL 日,您還可以在 [database] 部分中置 LOG_SQL=true
; 要示所有 SQL 日,您還可以在 [database] 部分中置 LOG_SQL=true
[log]
LEVEL=debug
MODE=console,file
```
## 使用命令行收集堆栈跟踪
## 使用命令行收集堆棧跟蹤
Gitea 可以使用 Golang 的 pprof 理程和工具链来收集堆栈跟踪和其他运行时信息
Gitea 可以使用 Golang 的 pprof 理程和工具鏈來收集堆棧跟蹤和其他運行時資訊
如果 Web UI 停止工作,您可以尝试通過命令行收集堆栈跟踪
如果 Web UI 停止工作,您可以嘗試通過命令行收集堆棧跟蹤
1. 设置 app.ini
1. 設定 app.ini
```
[server]
ENABLE_PPROF = true
```
2. 重新启动 Gitea
2. 重新啟動 Gitea
3. 尝试触发 bug請求卡住一段时间,使用或浏览器访问:获取堆栈跟踪
3. 嘗試觸發 bug請求卡住一段時間,使用或瀏覽器訪問:獲取堆棧跟蹤
`curl http://127.0.0.1:6060/debug/pprof/goroutine?debug=1`
@@ -6,45 +6,45 @@ sidebar_position: 10
# 關於 Gitea
Gitea 是一個輕量級的 DevOps 平台軟體。從開發計劃到產品成型的整個軟體生命週期,他都能夠高效而輕鬆地幫助團隊和開發者。包括 Git 託管、碼審查、團隊協作、軟體包註冊和 CI/CD。它與 GitHub、Bitbucket 和 GitLab 等比較類似。
Gitea 最初是從 [Gogs](http://gogs.io) 分支而來,幾乎所有碼都已更改。對於我們 Fork 的原因可以看
Gitea 是一個輕量級的 DevOps 平台軟體。從開發計劃到產品成型的整個軟體生命週期,他都能夠高效而輕鬆地幫助團隊和開發者。包括 Git 託管、程式碼審查、團隊協作、套件註冊和 CI/CD。它與 GitHub、Bitbucket 和 GitLab 等比較類似。
Gitea 最初是從 [Gogs](http://gogs.io) 分支而來,幾乎所有程式碼都已更改。對於我們 Fork 的原因可以看
[這裡](https://blog.gitea.com/welcome-to-gitea/)。
## 目標
Gitea 的首要目標是建一個極易安裝,運行非常快速,安裝和使用體驗良好的自建 Git 服務。
Gitea 的首要目標是建一個極易安裝,運行非常快速,安裝和使用體驗良好的自建 Git 服務。
採用 Go 作為後端語言,只需生成一個可執行程即可。
Linux, macOS 和 Windows 等多平台,
主流的 x86amd64、
採用 Go 作為後端語言,只需生成一個可執行程即可。
Linux, macOS 和 Windows 等多平台,
主流的 x86amd64、
ARM 和 PowerPC 等架構。
## 功能特性
- 碼託管:Gitea 支持創建和管理庫、瀏覽提交歷史和代碼文件、審查和合併碼提交、管理協作者、管理分支等。它還支許多常見的 Git 特性,例如標籤、Cherry-pick、hook、集成協作工具等。
- 輕量級和快速:Gitea 的設計目標之一就是輕量級和快速響應。它不像一些大型的碼託管平台那樣臃腫,因此在性能方面表現出色,適用於資源有限的伺服器環境。由於其輕量級設計,Gitea 在資源消耗方面相對較低,可以在資源有限的環境下運行良好。
- 易於部署和維護:輕鬆地部署在各種伺服器上,不需要複雜的配置和依賴。這使得個人開發者或小團隊可以方便地設和管理自己的 Git 服務。
- 安全性:Gitea 注重安全性,提供了用戶權限管理、訪問控制列表等功能,可以確保代碼和數據的安全性。
- 碼評審:碼評審同時支 Pull Request workflow 和 AGit workflow。評審人可以在線瀏覽碼,並提交評審意見或問題。提交者可以接收到評審意見,並在線回復或修改代碼。代碼評審可以幫助用戶和企業提高碼質量。
- CI/CDGitea Actions 支 CI/CD 功能,該功能容 GitHub Actions用戶可以採用熟悉的 YAML 格式編寫 workflows,也可以重用大量的已有的 Actions 插件。Actions 插件支持從任意的 Git 網站中下載。
- 項目管理:Gitea 過看板和工單來跟一個項目的需求,功能和 bug。工單支分支,標籤、里程碑、指派、時間跟、到期時間、依賴關係等功能。
- 品庫:Gitea 支超過 20 種不同種類的公有或私有軟體包管理,包括:Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant 等
- 開源社區支:Gitea 是一個基於 MIT 許可證的開源項目,Gitea 擁有一個活躍的開源社區,能夠持續地進行開發和改進,同時也積極接受社區貢獻,保持了平台的更新和創新。
- 多語言支Gitea 提供多種語言面,適應全球範圍內的用戶,促進了國際化和本地化。
- 程式碼託管:Gitea 支援建立和管理儲存庫、瀏覽提交歷史和程式碼檔案、審查和合併程式碼提交、管理協作者、管理分支等。它還支許多常見的 Git 特性,例如標籤、Cherry-pick、hook、整合協作工具等。
- 輕量級和快速:Gitea 的設計目標之一就是輕量級和快速響應。它不像一些大型的程式碼託管平台那樣臃腫,因此在性能方面表現出色,適用於資源有限的伺服器環境。由於其輕量級設計,Gitea 在資源消耗方面相對較低,可以在資源有限的環境下運行良好。
- 易於部署和維護:輕鬆地部署在各種伺服器上,不需要複雜的設定和依賴。這使得個人開發者或小團隊可以方便地設和管理自己的 Git 服務。
- 安全性:Gitea 注重安全性,提供了使用者權限管理、存取控制清單等功能,可以確保程式碼和資料的安全性。
- 程式碼評審:程式碼評審同時支 Pull Request workflow 和 AGit workflow。評審人可以在線瀏覽程式碼,並提交評審意見或問題。提交者可以接收到評審意見,並在線回復或修改程式碼。程式碼評審可以幫助使用者和企業提高程式碼質量。
- CI/CDGitea Actions 支 CI/CD 功能,該功能容 GitHub Actions使用者可以採用熟悉的 YAML 格式編寫 workflows,也可以重用大量的已有的 Actions 外掛。Actions 外掛支援從任意的 Git 網站中下載。
- 專案管理:Gitea 過看板和工單來跟一個專案的需求,功能和 bug。工單支分支,標籤、里程碑、指派、時間跟、到期時間、依賴關係等功能。
- 品庫:Gitea 支超過 20 種不同種類的公有或私有套件管理,包括:Cargo, Chef, Composer, Conan, Conda, Container, Helm, Maven, npm, NuGet, Pub, PyPI, RubyGems, Vagrant 等
- 開源社區支:Gitea 是一個基於 MIT 許可證的開源專案,Gitea 擁有一個活躍的開源社區,能夠持續地進行開發和改進,同時也積極接受社區貢獻,保持了平台的更新和創新。
- 多語言支Gitea 提供多種語言面,適應全球範圍內的使用者,促進了國際化和本地化。
更多功能特性:詳見:https://docs.gitea.com/installation/comparison#general-features
## 系統要求
- 樹莓派 Pi3 功能強大,足以運行 Gitea 來處理小型工作負載。
- 對於小型團隊/項目而言,2 個 CPU 內核和 1GB 內存通常就足夠了。
- 在 UNIX 系統上,Gitea 應使用專用的非 root 系統賬戶運行。
- 注意:Gitea 管理 `~/.ssh/authorized_keys` 文件。以普通用戶身份運行 Gitea 可能會破壞該用戶的登能力。
- 對於小型團隊/專案而言,2 個 CPU 內核和 1GB 內存通常就足夠了。
- 在 UNIX 系統上,Gitea 應使用專用的非 root 系統帳號運行。
- 注意:Gitea 管理 `~/.ssh/authorized_keys` 文件。以普通使用者身份運行 Gitea 可能會破壞該使用者的登能力。
- [Git](https://git-scm.com/) 需要 2.0.0 或更高版本。
- [Git Large File Storage](https://git-lfs.github.com/) 如果啟用,且 Git 版本大於等於 2.1.2,則該選項可用
- 如果 Git 版本大於等於 2.18,將自動啟用 Git 提交歷史圖形化展示功能
## 瀏覽器支
## 瀏覽器支
- 最後 2 個版本的 Chrome、Firefox、Safari 和 Edge
- Firefox ESR
@@ -57,17 +57,17 @@ ARM 和 PowerPC 等架構。
- [jQuery](https://jquery.com)
- [Fomantic UI](https://fomantic-ui.com)
- [Vue3](https://vuejs.org)
- 更多件參見 package.json
- 更多件參見 package.json
- 編輯器:
- [CodeMirror](https://codemirror.net)
- [EasyMDE](https://github.com/Ionaru/easy-markdown-editor)
- [Monaco Editor](https://microsoft.github.io/monaco-editor)
- 數據庫驅動:
- 資料庫驅動:
- [github.com/go-sql-driver/mysql](https://github.com/go-sql-driver/mysql)
- [github.com/lib/pq](https://github.com/lib/pq)
- [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
- [github.com/denisenkom/go-mssqldb](https://github.com/denisenkom/go-mssqldb)
## 集成支持
## 整合支援
訪問 [Awesome Gitea](https://gitea.com/gitea/awesome-gitea/) 獲得更多的第三方集成支持
前往 [Awesome Gitea](https://gitea.com/gitea/awesome-gitea/) 獲得更多的第三方整合支援
@@ -6,99 +6,99 @@ aliases:
- /zh-tw/comparison
---
# 比 Gitea 其它 Git 管工具
# 比 Gitea 其它 Git 管工具
这里列出了 Gitea 其它一些 Git 管工具之间的异同,以便确认 Gitea 是否能够满足您的需求。
這裡列出了 Gitea 其它一些 Git 管工具之間的異同,以便確認 Gitea 是否能夠滿足您的需求。
請注意,此列表中的某些表可能已经過时,因為我们並没有定期查其它品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 来帮助我更新過时的内容,感
請注意,此列表中的某些表可能已經過時,因為我們並沒有定期查其它品的功能是否有所更改。你可以前往 [Github issue](https://github.com/go-gitea/gitea/issues) 來幫助我更新過時的內容,感
_表格中的符号含义:_
_表格中的符號含義:_
- _✓ - 支_
- _✓ - 支_
- _ - 部分支_
- _ - 部分支_
- _✘ - 不支_
- _✘ - 不支_
- _⚙️ - 由第三方服务或插件支持_
- _⚙️ - 由第三方服務或外掛支援_
#### 主要特性
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------------------- | --------------------------------------------------- | ---- | --------- | --------- | --------- | -------------- | ------------ |
| 源免 | ✓ | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ |
| 低资源开销 (RAM/CPU) | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 支持多种数据库 | ✓ | ✓ | ✘ | ⁄ | ⁄ | ✓ | ✓ |
| 支持多种操作系 | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ |
| 升级简便 | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 可观测性 | **✘** | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
| 支第三方渲染工具 | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | ? |
| 源免 | ✓ | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ |
| 低資源開銷 (RAM/CPU) | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 支援多種資料庫 | ✓ | ✓ | ✘ | ⁄ | ⁄ | ✓ | ✓ |
| 支援多種操作系 | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ |
| 升級簡便 | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 可觀測性 | **✘** | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
| 支第三方渲染工具 | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | ? |
| WebAuthn (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ? |
| 展 API | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 内置軟體包/容器注册中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 展 API | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 內置套件/容器註冊中心 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 同步提交到外部存放庫 (push mirror) | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 同步外部存放庫的提交 (pull mirror) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ? |
| 色和深色主 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ? |
| 自定义主题支持 | ✓ | ✓ | ✘ | ✘ | ✘ | ✓ | ✘ |
| 支 Markdown | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支 CSV | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ | ? |
| Git 驱动的静态 pages | [⚙️][gitea-pages-server], [⚙️][gitea-caddy-plugin] | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Git 驱动的集成化 wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 色和深色主 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ? |
| 自訂主題支援 | ✓ | ✓ | ✘ | ✘ | ✘ | ✓ | ✘ |
| 支 Markdown | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支 CSV | ✓ | ✘ | ✓ | ✘ | ✘ | ✓ | ? |
| Git 驅動的靜態 pages | [⚙️][gitea-pages-server], [⚙️][gitea-caddy-plugin] | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Git 驅動的整合化 wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 部署令牌 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫写权限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫寫權限令牌 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| RSS Feeds | ✓ | ✘ | ✓ | ✘ | ✘ | ✘ | ✘ |
| 置 CI/CD | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 子組織:組織的組織 | [](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 多例交互 | [/](https://github.com/go-gitea/gitea/issues/18240) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| Markdown 绘图 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Markdown 数学公式 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 置 CI/CD | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 子組織:組織的組織 | [](https://github.com/go-gitea/gitea/issues/1872) | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ |
| 多例交互 | [/](https://github.com/go-gitea/gitea/issues/18240) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| Markdown 繪圖 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| Markdown 數學公式 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
#### 代码管理
#### 程式碼管理
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------- | --------------------------------------------------- | ---- | --------- | --------- | --------- | --------- | ------------ |
| 存放庫主描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 存放庫内代码搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 全局代码搜索 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ |
| 存放庫主描述 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 存放庫內程式碼搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 全域程式碼搜索 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ |
| Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 組織里程碑 | [](https://github.com/go-gitea/gitea/issues/14622) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 粒度使用者角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 粒度使用者角色 | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 提交人的身份驗證 | ⁄ | ✘ | ? | ✓ | ✓ | ✓ | ✘ |
| GPG 名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SSH 名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ? |
| 拒未通過驗證的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部存放庫移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫活跃度页面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| GPG 名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SSH 名的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ? |
| 拒未通過驗證的提交 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 外部存放庫移 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 存放庫活躍度頁面 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 分支管理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 建立新分支 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 在线代码编辑 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 提交的统计图表 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 在線程式碼編輯 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 提交的統計圖表 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 模板存放庫 | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✘ |
| Git Blame | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 可视化镜像变化 | ✓ | ✘ | ✓ | ? | ? | ? | ? |
| 可視化鏡像變化 | ✓ | ✘ | ✓ | ? | ? | ? | ? |
#### 工單管理
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | ----------------------------------------------------------------------- | --------- | -------------- | ------------ |
| 工單跟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工單跟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (cloud only) | ✘ |
| 工單模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 標籤 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 时间跟踪 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 支持多个负责人 | ✓ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
| 关联的工單 | ✘ | ✘ | | [](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 時間跟蹤 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 支援多個負責人 | ✓ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
| 關聯的工單 | ✘ | ✘ | | [](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | ✓ | ✘ | ✘ |
| 私密工單 | [](https://github.com/go-gitea/gitea/issues/3217) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 评论反馈 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 锁定讨论 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單批理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 評論反饋 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 鎖定討論 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單批理 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單看板 | [](https://github.com/go-gitea/gitea/pull/8346) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 工單建立分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 从评论建立工單 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單建立分支 | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 從評論建立工單 | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 工單搜索 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工單全搜索 | [](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工單依赖关系 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 工單全搜索 | [](https://github.com/go-gitea/gitea/issues/2434) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 工單依賴關係 | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
| 通過 Email 建立工單 | [](https://github.com/go-gitea/gitea/issues/6226) | [](https://github.com/gogs/gogs/issues/2602) | ✘ | ✓ | ✓ | ✓ | ✘ |
| 服务台 | [](https://github.com/go-gitea/gitea/issues/6219) | ✘ | ✘ | [](https://gitlab.com/groups/gitlab-org/-/epics/3103) | ✓ | ✘ | ✘ |
| 服務檯 | [](https://github.com/go-gitea/gitea/issues/6219) | ✘ | ✘ | [](https://gitlab.com/groups/gitlab-org/-/epics/3103) | ✓ | ✘ | ✘ |
#### Pull/Merge requests
@@ -107,34 +107,34 @@ _表格中的符号含义:_
| Pull/Merge requests | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Squash merging | ✓ | ✘ | ✓ | [](https://docs.gitlab.com/ce/user/project/merge_requests/squash_and_merge.html) | ✓ | ✓ | ✓ |
| Rebase merging | ✓ | ✓ | ✓ | ✘ | ⁄ | ✘ | ✓ |
| 评论 Pull/Merge request 中的某行代码 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 指定 Pull/Merge request 的审核人 | ✓ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ |
| 解 Merge 突 | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 限制某些使用者的 push 和 merge 限 | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ |
| 評論 Pull/Merge request 中的某行程式碼 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 指定 Pull/Merge request 的審覈人 | ✓ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ |
| 解 Merge 突 | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 限制某些使用者的 push 和 merge 限 | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ |
| 回退某些 commits 或 merge request | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| Pull/Merge requests 模板 | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 查看 Cherry-picking 的更改 | [](https://github.com/go-gitea/gitea/issues/5158) | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ |
| 下 Patch | ✓ | ✘ | ✓ | ✓ | ✓ | [/](https://jira.atlassian.com/plugins/servlet/mobile#issue/BCLOUD-8323) | ✘ |
| 下 Patch | ✓ | ✘ | ✓ | ✓ | ✓ | [/](https://jira.atlassian.com/plugins/servlet/mobile#issue/BCLOUD-8323) | ✘ |
| Merge queues | ✘ | ✘ | ✓ | ✘ | ✓ | ✘ | ✘ |
#### 第三方集成
#### 第三方整合
| 特性 | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | --------- | --------- | --------- | ------------ |
| 支 Webhook | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 自定义 Git 子 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 集成 AD / LDAP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支持多个 LDAP / AD 服 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
| 支 Webhook | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 自 Git 子 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 整合 AD / LDAP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 支援多個 LDAP / AD 服 | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ |
| LDAP 使用者同步 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| SAML 2.0 service provider | [](https://github.com/go-gitea/gitea/issues/5512) | [](https://github.com/gogs/gogs/issues/1221) | ✓ | ✓ | ✓ | ✓ | ✘ |
| 支 OpenId 接 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ |
| 集成 OAuth 2.0(外部授) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ |
| 支 OpenId 接 | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ |
| 整合 OAuth 2.0(外部授) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ |
| 作為 OAuth 2.0 provider | [](https://github.com/go-gitea/gitea/pull/5378) | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 二次驗證 (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 集成 Mattermost/Slack | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ |
| 集成 Discord | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 集成 Microsoft Teams | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 示外部 CI/CD 的状态 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 整合 Mattermost/Slack | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ |
| 整合 Discord | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ |
| 整合 Microsoft Teams | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ |
| 示外部 CI/CD 的狀態 | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ |
[gitea-caddy-plugin]: https://github.com/42wim/caddy-gitea
[gitea-pages-server]: https://codeberg.org/Codeberg/pages-server
@@ -6,190 +6,190 @@ aliases:
- /zh-tw/database-prep
---
# 数据库准备
# 資料庫準備
在使用 Gitea 前,您需要准备一个数据库。Gitea 支 PostgreSQL>= 12)、MySQL>= 8.0)、MariaDB>= 10.4)、SQLite置) 和 MSSQL>= 2012 SP4这几种数据库。本页将指导您准备数据库。由 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文檔将僅涵盖这两种数据库。如果您计划使用 SQLite可以忽略本章容。
在使用 Gitea 前,您需要準備一個資料庫。Gitea 支 PostgreSQL>= 12)、MySQL>= 8.0)、MariaDB>= 10.4)、SQLite置) 和 MSSQL>= 2012 SP4這幾種資料庫。本頁將指導您準備資料庫。由 PostgreSQL 和 MySQL 在生產環境中被泛使用,因此本文件將僅涵蓋這兩種資料庫。如果您計劃使用 SQLite可以忽略本章容。
如果您使用不受支持的数据库版本,請通過 [联系我们](/help/support) 以取有关我们的扩展支持的信息。我可以為旧数据库提供测试和支,並将这些修复集成到 Gitea 代码库中。
如果您使用不受支援的資料庫版本,請通過 [聯繫我們](/help/support) 以取有關我們的擴展支援的資訊。我可以為舊資料庫提供測試和支,並將這些修復整合到 Gitea 程式碼庫中。
数据库实例可以 Gitea 例在相同器上(本地数据库),也可以 Gitea 例在不同器上(远程数据库)。
資料庫實例可以 Gitea 例在相同器上(本地資料庫),也可以 Gitea 例在不同器上(遠程資料庫)。
注意:以下所有步要求您的選择的数据库引擎已安裝在您的系上。對於远程数据库设置,請在数据库实例上安裝服器應用程,在 Gitea 服器上安裝客端程。客端程序用于测试 Gitea 服务器与数据库之间的连接,而 Gitea 本身使用 Go 提供的数据库驱动程序完成相同的任。此外,請确保服务器和客端使用相同的引擎版本,以使某些引擎功能正常工作。出安全原因,請使用安全密碼保 `root`MySQL)或 `postgres`PostgreSQL数据库超级使用者。以下步骤假设您在数据库和 Gitea 服器上都使用 Linux。
注意:以下所有步要求您的選擇的資料庫引擎已安裝在您的系上。對於遠程資料庫設定,請在資料庫實例上安裝服器應用程,在 Gitea 服器上安裝客端程。客端程式用於測試 Gitea 伺服器與資料庫之間的連接,而 Gitea 本身使用 Go 提供的資料庫驅動程式完成相同的任。此外,請確保伺服器和客端使用相同的引擎版本,以使某些引擎功能正常工作。出安全原因,請使用安全密碼保 `root`MySQL)或 `postgres`PostgreSQL資料庫超級使用者。以下步驟假設您在資料庫和 Gitea 服器上都使用 Linux。
## MySQL/MariaDB
1. 對於远程数据库设置,您需要 MySQL 监听您的 IP 地址。编辑数据库实例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address`為:
1. 對於遠程資料庫設定,您需要 MySQL 監聽您的 IP 地址。編輯資料庫實例上的 `/etc/mysql/my.cnf` 文件中的 `bind-address`為:
```ini
bind-address = 203.0.113.3
```
2. 在数据库实例上,使用 `root` 使用者登入到数据库控制
2. 在資料庫實例上,使用 `root` 使用者登入到資料庫控制
```
mysql -u root -p
```
按提示入密碼。
按提示入密碼。
3. 建立一个将被 Gitea 使用的数据库使用者,並使用密碼進行身份驗證。以下例中使用了 `'gitea'` 作為密碼。請為您的例使用一安全密碼。
3. 建立一個將被 Gitea 使用的資料庫使用者,並使用密碼進行身份驗證。以下例中使用了 `'gitea'` 作為密碼。請為您的例使用一安全密碼。
對於本地数据库
對於本地資料庫
```sql
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
```
對於远程数据库
對於遠程資料庫
```sql
SET old_passwords=0;
CREATE USER 'gitea'@'192.0.2.10' IDENTIFIED BY 'gitea';
```
其中 `192.0.2.10` 是您的 Gitea 例的 IP 地址。
其中 `192.0.2.10` 是您的 Gitea 例的 IP 地址。
需要替上述使用者名和密碼。
需要替上述使用者名和密碼。
4. 使用 UTF-8 字符集和大小敏感的排序規則建立数据库
4. 使用 UTF-8 字符集和大小敏感的排序規則建立資料庫
`utf8mb4_bin` 是 MySQL/MariaDB 的通用排序規則。
Gitea 启动后会尝试把数据库修改為更合的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 並在可能的情下更改数据库
如果你想指定自己的字符集規則,可以在 `app.ini` 中设置 `[database].CHARSET_COLLATION`。
Gitea 啟動後會嘗試把資料庫修改為更合的字符集 (`utf8mb4_0900_as_cs` 或者 `uca1400_as_cs`) 並在可能的情下更改資料庫
如果你想指定自己的字符集規則,可以在 `app.ini` 中設定 `[database].CHARSET_COLLATION`。
```sql
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
```
需要替换数据库名稱。
需要替換資料庫名稱。
5. 将数据库上的所有限授予上述建立的数据库使用者。
5. 將資料庫上的所有限授予上述建立的資料庫使用者。
對於本地数据库
對於本地資料庫
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
```
對於远程数据库
對於遠程資料庫
```sql
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea'@'192.0.2.10';
FLUSH PRIVILEGES;
```
6. 通過 `exit` 退出数据库控制
6. 通過 `exit` 退出資料庫控制
7. 在您的 Gitea 服器上,测试与数据库的连接:
7. 在您的 Gitea 服器上,測試與資料庫的連接:
```
mysql -u gitea -h 203.0.113.3 -p giteadb
```
其中 `gitea` 是数据库使用者名,`giteadb` 是数据库名稱,`203.0.113.3` 是数据库实例的 IP 地址。對於本地数据库,省略 `-h` 選
其中 `gitea` 是資料庫使用者名`giteadb` 是資料庫名稱,`203.0.113.3` 是資料庫實例的 IP 地址。對於本地資料庫,省略 `-h` 選
到此您應該能够连接到数据库了。
到此您應該能夠連接到資料庫了。
## PostgreSQL
1. 對於远程数据库设置,通過编辑数据库实例上的 postgresql.conf 文件中的 `listen_addresses` `PostgreSQL` 配置為监听您的 IP 地址:
1. 對於遠程資料庫設定,通過編輯資料庫實例上的 postgresql.conf 文件中的 `listen_addresses` `PostgreSQL` 設定為監聽您的 IP 地址:
```ini
listen_addresses = 'localhost, 203.0.113.3'
```
2. PostgreSQL 默认使用 `md5` 质询-響應加密方案進行密碼身份驗證。現在这个方案不再被為是安全的。改用 SCRAM-SHA-256 方案,通過编辑数据库服务器上的` postgresql.conf` 配置文件:
2. PostgreSQL 預設使用 `md5` 質詢-響應加密方案進行密碼身份驗證。現在這個方案不再被為是安全的。改用 SCRAM-SHA-256 方案,通過編輯資料庫伺服器上的` postgresql.conf` 設定文件:
```ini
password_encryption = scram-sha-256
```
PostgreSQL 以應用該设置
PostgreSQL 以應用該設定
3. 在数据库服务器上,以超使用者身份登入到数据库控制
3. 在資料庫伺服器上,以超使用者身份登入到資料庫控制
```
su -c "psql" - postgres
```
4. 建立具有登入限和密碼的数据库使用者(在 PostgreSQL 术语中稱為角色)。請使用安全的、密碼,而不是下面的 `'gitea'`
4. 建立具有登入限和密碼的資料庫使用者(在 PostgreSQL 術語中稱為角色)。請使用安全的、密碼,而不是下面的 `'gitea'`
```sql
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
```
需要替使用者名和密碼。
需要替使用者名和密碼。
5. 使用 UTF-8 字符集建立数据库,並由之前建立的数据库使用者有。可以根据预期内容使用任何 `libc` 排序規則,使用 `LC_COLLATE` 和 `LC_CTYPE` 參數指定:
5. 使用 UTF-8 字符集建立資料庫,並由之前建立的資料庫使用者有。可以根據預期內容使用任何 `libc` 排序規則,使用 `LC_COLLATE` 和 `LC_CTYPE` 參數指定:
```sql
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
```
需要替换数据库名稱。
需要替換資料庫名稱。
6. 通過以下身份驗證規則添加到 `pg_hba.conf`,允许数据库使用者访问上面建立的数据库
6. 通過以下身份驗證規則添加到 `pg_hba.conf`,允許資料庫使用者訪問上面建立的資料庫
對於本地数据库
對於本地資料庫
```ini
local giteadb gitea scram-sha-256
```
對於远程数据库
對於遠程資料庫
```ini
host giteadb gitea 192.0.2.10/32 scram-sha-256
```
您自己的数据库名稱、使用者和 Gitea 例的 IP 地址進行替
您自己的資料庫名稱、使用者和 Gitea 例的 IP 地址進行替
注意:`pg_hba.conf` 上的規則按顺序评估,也就是第一匹配的規則将用于身份驗證。您的 PostgreSQL 安裝可能附带了适用于所有使用者和数据库的通用身份驗證規則。如果是这种情况,您可能需要将此处提供的規則放置在此通用規則之上。
注意:`pg_hba.conf` 上的規則按順序評估,也就是第一匹配的規則將用於身份驗證。您的 PostgreSQL 安裝可能附帶了適用於所有使用者和資料庫的通用身份驗證規則。如果是這種情況,您可能需要將此處提供的規則放置在此通用規則之上。
PostgreSQL 以應用新的身份驗證規則。
PostgreSQL 以應用新的身份驗證規則。
7. 在您的 Gitea 服器上,测试与数据库的连接。
7. 在您的 Gitea 服器上,測試與資料庫的連接。
對於本地数据库
對於本地資料庫
```
psql -U gitea -d giteadb
```
對於远程数据库
對於遠程資料庫
```
psql "postgres://[email protected]/giteadb"
```
其中 `gitea` 是数据库使用者,`giteadb` 是数据库名稱,`203.0.113.3` 是您的数据库实例的 IP 地址。
其中 `gitea` 是資料庫使用者,`giteadb` 是資料庫名稱,`203.0.113.3` 是您的資料庫實例的 IP 地址。
您應該被提示输入数据库使用者的密碼,並接到数据库
您應該被提示輸入資料庫使用者的密碼,並接到資料庫
## 使用 TLS 進行数据库连
## 使用 TLS 進行資料庫連
如果 Gitea 和您的数据库实例之的通信是通過私有网络進行的,或者如果 Gitea 和数据库运行在同一台服务器上,那可以省略本,因為 Gitea 和数据库实例之的安全性不受到重威。但是,如果数据库实例位公共网络上,請使用 TLS 对数据库连接進行加密,以防止第三方截流量数据
如果 Gitea 和您的資料庫實例之的通信是通過私有網路進行的,或者如果 Gitea 和資料庫運行在同一臺伺服器上,那可以省略本,因為 Gitea 和資料庫實例之的安全性不受到重威。但是,如果資料庫實例位公共網路上,請使用 TLS 對資料庫連接進行加密,以防止第三方截流量資料
### 先决条
### 先決條
- 您需要两个有效的 TLS 证书,一个用于数据库实例(数据库服务器),一个用于 Gitea 例(数据库客户端)。两个证书都必須由受信任的 CA 名。
- 数据库证书必須在 `X509v3 Extended Key Usage` 扩展属性中包含 `TLS Web Server Authentication`,而客户端证书则需要在相應的性中包含 `TLS Web Client Authentication`。
- 在数据库服务器证书中,`Subject Alternative Name` 或 `Common Name` 目之一必須是数据库实例的完全限定域名(FQDN)(例如 `db.example.com`)。在数据库客户端证书中,上述提到的目之一必須包含 Gitea 将用于连接的数据库使用者名。
- 您需要 Gitea 和数据库服务器的域名映射到它各自的 IP 地址。可以為它们设置 DNS 记录,也可以在每个系统上的 `/etc/hosts`Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。这样可以過域名而不是 IP 地址進行数据库连接。有关详细信息,請参阅您系的文
- 您需要兩個有效的 TLS 證書,一個用於資料庫實例(資料庫伺服器),一個用於 Gitea 例(資料庫客戶端)。兩個證書都必須由受信任的 CA 名。
- 資料庫證書必須在 `X509v3 Extended Key Usage` 擴展屬性中包含 `TLS Web Server Authentication`,而客戶端證書則需要在相應的性中包含 `TLS Web Client Authentication`。
- 在資料庫伺服器證書中,`Subject Alternative Name` 或 `Common Name` 目之一必須是資料庫實例的完全限定域名(FQDN)(例如 `db.example.com`)。在資料庫客戶端證書中,上述提到的目之一必須包含 Gitea 將用於連接的資料庫使用者名
- 您需要 Gitea 和資料庫伺服器的域名映射到它各自的 IP 地址。可以為它們設定 DNS 記錄,也可以在每個系統上的 `/etc/hosts`Windows 中的 `%WINDIR%\System32\drivers\etc\hosts`)中添加本地映射。這樣可以過域名而不是 IP 地址進行資料庫連接。有關詳細資訊,請參閱您系的文
### PostgreSQL TLS
Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在向 TLS 中,数据库客户端和服务器通過各自的证书发送给对方進行驗證相互認證。换句话说,服务器驗證客户端证书,客端驗證服务器证书
Gitea 使用的 PostgreSQL 驅動程式支援雙向 TLS。在向 TLS 中,資料庫客戶端和伺服器通過各自的證書發送給對方進行驗證相互認證。換句話說,伺服器驗證客戶端證書,客端驗證伺服器證書
1. 在数据库实例所在的服器上,放置以下凭据
1. 在資料庫實例所在的服器上,放置以下憑據
- `/path/to/postgresql.crt`: 数据库实例证书
- `/path/to/postgresql.key`: 数据库实例私
- `/path/to/root.crt`: 用驗證客户端证书的 CA 证书链
- `/path/to/postgresql.crt`: 資料庫實例證書
- `/path/to/postgresql.key`: 資料庫實例私
- `/path/to/root.crt`: 用驗證客戶端證書的 CA 證書鏈
2. 在 `postgresql.conf` 中添加以下選
2. 在 `postgresql.conf` 中添加以下選
```ini
ssl = on
@@ -199,14 +199,14 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
ssl_min_protocol_version = 'TLSv1.2'
```
3. 根 PostgreSQL 的要求,调整凭据的所有权和权限:
3. 根 PostgreSQL 的要求,調整憑據的所有權和權限:
```
chown postgres:postgres /path/to/root.crt /path/to/postgresql.crt /path/to/postgresql.key
chmod 0600 /path/to/root.crt /path/to/postgresql.crt /path/to/postgresql.key
```
4. 编辑 `pg_hba.conf` 規則,僅允 Gitea 数据库使用者通過 SSL 接,並要求客户端证书驗證。
4. 編輯 `pg_hba.conf` 規則,僅允 Gitea 資料庫使用者通過 SSL 接,並要求客戶端證書驗證。
對於 PostgreSQL 12
@@ -220,46 +220,46 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
hostssl giteadb gitea 192.0.2.10/32 scram-sha-256 clientcert=1
```
需要替换数据库名稱、使用者和 Gitea 例的 IP 地址。
需要替換資料庫名稱、使用者和 Gitea 例的 IP 地址。
5. 重新启动 PostgreSQL 以應用上述配置
5. 重新啟動 PostgreSQL 以應用上述設定
6. 在行 Gitea 例的服器上,以下凭据放置在行 Gitea 的使用者的主目錄下(例如 `git`):
6. 在行 Gitea 例的服器上,以下憑據放置在行 Gitea 的使用者的主目錄下(例如 `git`):
- `~/.postgresql/postgresql.crt`: 数据库客户端证书
- `~/.postgresql/postgresql.key`: 数据库客户端私
- `~/.postgresql/root.crt`: 用驗證服务器证书的 CA 证书链
- `~/.postgresql/postgresql.crt`: 資料庫客戶端證書
- `~/.postgresql/postgresql.key`: 資料庫客戶端私
- `~/.postgresql/root.crt`: 用驗證伺服器證書的 CA 證書鏈
注意:上述文件名在 PostgreSQL 中是硬编码的,無法更改。
注意:上述文件名在 PostgreSQL 中是硬編碼的,無法更改。
7. 根需要调整凭据、所有权和权限:
7. 根需要調整憑據、所有權和權限:
```
chown git:git ~/.postgresql/postgresql.crt ~/.postgresql/postgresql.key ~/.postgresql/root.crt
chown 0600 ~/.postgresql/postgresql.crt ~/.postgresql/postgresql.key ~/.postgresql/root.crt
```
8. 测试与数据库的连接:
8. 測試與資料庫的連接:
```
psql "postgres://[email protected]/giteadb?sslmode=verify-full"
```
被提示输入数据库使用者的密碼,然后连接到数据库
被提示輸入資料庫使用者的密碼,然後連接到資料庫
### MySQL/MariaDB TLS
然 Gitea 使用的 MySQL 驱动程序也支持双向 TLS,但目前 Gitea 僅支單向 TLS。有关详细信息,請参见工單#10828。
然 Gitea 使用的 MySQL 驅動程式也支援雙向 TLS,但目前 Gitea 僅支單向 TLS。有關詳細資訊,請參見工單#10828。
在單向 TLS 中,数据库客户端在接握手期驗證服务器发送的证书,而服务器则假定接的客端是合法的,因為不進行客户端证书驗證。
在單向 TLS 中,資料庫客戶端在接握手期驗證伺服器發送的證書,而伺服器則假定接的客端是合法的,因為不進行客戶端證書驗證。
1. 在数据库实例上放置以下凭据
1. 在資料庫實例上放置以下憑據
- `/path/to/mysql.crt`: 数据库实例证书
- `/path/to/mysql.key`: 数据库实例密
- `/path/to/ca.crt`: CA 证书链。在單向 TLS 中不使用此文件,但用驗證向 TLS 中的客户端证书
- `/path/to/mysql.crt`: 資料庫實例證書
- `/path/to/mysql.key`: 資料庫實例密
- `/path/to/ca.crt`: CA 證書鏈。在單向 TLS 中不使用此文件,但用驗證向 TLS 中的客戶端證書
2. 以下選添加到 `my.cnf`
2. 以下選添加到 `my.cnf`
```ini
[mysqld]
@@ -269,16 +269,16 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
tls-version = TLSv1.2,TLSv1.3
```
3. 调整凭据的所有权和权限:
3. 調整憑據的所有權和權限:
```
chown mysql:mysql /path/to/ca.crt /path/to/mysql.crt /path/to/mysql.key
chmod 0600 /path/to/ca.crt /path/to/mysql.crt /path/to/mysql.key
```
4. 重新启动 MySQL 以應用设置
4. 重新啟動 MySQL 以應用設定
5. Gitea 的数据库使用者可能已建立過,但只会对运行 Gitea 的服器的 IP 地址進行身份驗證。要其域名進行身份驗證,請重新建立使用者,並设置其需要通過 TLS 接到数据库
5. Gitea 的資料庫使用者可能已建立過,但只會對運行 Gitea 的服器的 IP 地址進行身份驗證。要其域名進行身份驗證,請重新建立使用者,並設定其需要通過 TLS 接到資料庫
```sql
DROP USER 'gitea'@'192.0.2.10';
@@ -287,14 +287,14 @@ Gitea 使用的 PostgreSQL 驱动程序支持双向 TLS。在双向 TLS 中,
FLUSH PRIVILEGES;
```
需要替换数据库使用者名、密碼和 Gitea 例域名。
需要替換資料庫使用者名、密碼和 Gitea 例域名。
6. 保用驗證数据库服务器证书的 CA 证书链位于数据库和 Gitea 服器的系统证书存儲中。請考系统文檔中有关将 CA 证书添加到证书存儲的说明。
6. 保用驗證資料庫伺服器證書的 CA 證書鏈位於資料庫和 Gitea 服器的系統證書儲存中。請考系統文件中有關將 CA 證書添加到證書儲存的說明。
7. 在行 Gitea 的服器上,测试与数据库的连接:
7. 在行 Gitea 的服器上,測試與資料庫的連接:
```
mysql -u gitea -h example.db -p --ssl
```
至此應該成功接到数据库了。
至此應該成功接到資料庫了。
@@ -8,57 +8,57 @@ aliases:
# 使用二進制文件安裝
所有打包的二進制程序均包含 SQLiteMySQL 和 PostgreSQL 的数据库连接支,同时网站的静态资源均已嵌入到可執行程中,这一点和曾的 Gogs 有所不同。
所有打包的二進製程式均包含 SQLiteMySQL 和 PostgreSQL 的資料庫連接支,同時網站的靜態資源均已嵌入到可執行程中,這一點和曾的 Gogs 有所不同。
## 下
## 下
你可以 [载页](https://dl.gitea.com/gitea/) 選择对應平台的二進制文件。
你可以 [載頁](https://dl.gitea.com/gitea/) 選擇對應平台的二進制文件。
### 選择架构
### 選擇架構
- **對於 Linux**`linux-amd64` 适用于 64-bit 的 Intel/AMD 平台。更多架包含 `arm64` (Raspberry PI 4)`386` (32-bit)`arm-5` 以及 `arm-6`
- **對於 Linux**`linux-amd64` 適用於 64-bit 的 Intel/AMD 平台。更多架包含 `arm64` (Raspberry PI 4)`386` (32-bit)`arm-5` 以及 `arm-6`
- **對於 Windows**`windows-4.0-amd64` 适用于 64-bit 的 Intel/AMD 平台,`386` 适用于 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本建了 gogit 可能解在的 Windows 平台上 Go 程序调用 git 子程序时面临的 [性能问题](https://github.com/go-gitea/gitea/pull/15482)
- **對於 Windows**`windows-4.0-amd64` 適用於 64-bit 的 Intel/AMD 平台,`386` 適用於 32-bit 的 Intel/AMD 平台。(提示:`gogit-windows` 版本建了 gogit 可能解在的 Windows 平台上 Go 程式調用 git 子程式時面臨的 [性能問題](https://github.com/go-gitea/gitea/pull/15482)
- **對於 macOS**`darwin-arm64` 适用于 Apple Silicon 架`darwin-amd64` 适用于 Intel 架.
- **對於 macOS**`darwin-arm64` 適用於 Apple Silicon 架`darwin-amd64` 適用於 Intel 架.
- **對於 FreeBSD**`freebsd12-amd64` 适用于 64-bit 的 Intel/AMD 平台。
- **對於 FreeBSD**`freebsd12-amd64` 適用於 64-bit 的 Intel/AMD 平台。
### 使用 wget 下
### 使用 wget 下
使用以下命令下载适用于 64-bit Linux 平台的二進制文件。
使用以下命令下載適用於 64-bit Linux 平台的二進制文件。
```sh
wget -O gitea https://dl.gitea.com/gitea/@version@/gitea-@version@-linux-amd64
chmod +x gitea
```
## 驗證 GPG
## 驗證 GPG
Gitea 打包的二進制文件使用 [GPG 密](https://keys.openpgp.org/search?q=teabot%40gitea.io) 名以防止篡改。
請根据对應文件名 `.asc` 中包含的校验码检验文件的一致性。
Gitea 打包的二進制文件使用 [GPG 密](https://keys.openpgp.org/search?q=teabot%40gitea.io) 名以防止篡改。
請根據對應文件名 `.asc` 中包含的校驗碼檢驗文件的一致性。
```sh
gpg --keyserver hkps://keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-@[email protected] gitea-@version@-linux-amd64
```
验正确时的信息`Good signature from "Teabot <[email protected]>"`
验错误时的信息`This key is not certified with a trusted signature!`
驗正確時的資訊`Good signature from "Teabot <[email protected]>"`
驗錯誤時的資訊`This key is not certified with a trusted signature!`
## 服务器设置
## 伺服器設定
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路。以下路可以過 [环境变](../administration/environment-variables.md) 初始化。
**提示:** `GITEA_WORK_DIR` 表示 Gitea 工作的路。以下路可以過 [環境變](../administration/environment-variables.md) 初始化。
### 准备环
### 準備環
查是否安裝 Git。要求 Git 版本 >= 2.0。
查是否安裝 Git。要求 Git 版本 >= 2.0。
```sh
git --version
```
建立使用者(推使用名稱 `git`
建立使用者(推使用名稱 `git`
```sh
# On Ubuntu/Debian:
@@ -83,7 +83,7 @@ adduser \
git
```
### 建立工作路
### 建立工作路
```sh
mkdir -p /var/lib/gitea/{custom,data,log}
@@ -94,112 +94,112 @@ chown root:git /etc/gitea
chmod 770 /etc/gitea
```
> **注意:** 為了 Web 安裝程可以写入配置文件,我们临时為 `/etc/gitea` 路授予了外使用者 `git` 写入权限。建在安裝结束后将配置文件的权限设置為只
> **注意:** 為了 Web 安裝程可以寫入設定文件,我們臨時為 `/etc/gitea` 路授予了外使用者 `git` 寫入權限。建在安裝結束後將設定文件的權限設定為只
>
> ```sh
> chmod 750 /etc/gitea
> chmod 640 /etc/gitea/app.ini
> ```
如果您不希望通過 Web 安裝程建立配置文件,可以将配置文件设置為僅供 Gitea 使用者只owner/group `root:git`, mode `0640`)並手工建立配置文件:
如果您不希望通過 Web 安裝程建立設定文件,可以將設定文件設定為僅供 Gitea 使用者只owner/group `root:git`, mode `0640`)並手工建立設定文件:
- 设置 `INSTALL_LOCK=true` 关闭安裝
-动配置数据库连接參數
- 設定 `INSTALL_LOCK=true` 關閉安裝
-動設定資料庫連接參數
- 使用 `gitea generate secret` 建立 `SECRET_KEY``INTERNAL_TOKEN`
- 提供所有必要的密
- 提供所有必要的密
详情参考 [命令行文](../administration/command-line.md) 中有 `gitea generate secret`容。
詳情參考 [命令行文](../administration/command-line.md) 中有 `gitea generate secret`容。
### 配置 Gitea 工作路
### 設定 Gitea 工作路
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服,你可以`WorkingDirectory` 參數来配置工作路。 否,使用环境变`GITEA_WORK_DIR` 来明确指出程工作和数据存放路
**提示:** 如果使用 Systemd 管理 Gitea 的 Linux 服,你可以`WorkingDirectory` 參數來設定工作路。 否,使用環境變`GITEA_WORK_DIR` 來明確指出程工作和資料存放路
```sh
export GITEA_WORK_DIR=/var/lib/gitea/
```
### 复制二進制文件到全位置
### 複製二進制文件到全位置
```sh
cp gitea /usr/local/bin/gitea
```
### 添加 bash/zsh 自动补全( 1.19 版本始)
### 添加 bash/zsh 自動補全( 1.19 版本始)
可以在 [`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete) 找到用 bash 自动补全的本。可以将其复制`/usr/share/bash-completion/completions/gitea`,或在 `.bashrc` 中引用。
可以在 [`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete) 找到用 bash 自動補全的本。可以將其複製`/usr/share/bash-completion/completions/gitea`,或在 `.bashrc` 中引用。
地,zsh 自动补全的本可以在 [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete) 找到。您可以将其复制`/usr/share/zsh/_gitea`,或在您的 `.zshrc` 中引用。
地,zsh 自動補全的本可以在 [`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete) 找到。您可以將其複製`/usr/share/zsh/_gitea`,或在您的 `.zshrc` 中引用。
具體情可能有所不同,这些脚本可能需要進一步的改進。
具體情可能有所不同,這些腳本可能需要進一步的改進。
## 行 Gitea
## 行 Gitea
完成以上步骤后,可以通過两种方式行 Gitea
完成以上步驟後,可以透過兩種方式行 Gitea
### 1. 建立服务自动启动 Gitea(推
### 1. 建立服務自動啟動 Gitea(推
学习建立 [Linux 服](installation/run-as-service-in-ubuntu.md)
學習建立 [Linux 服](installation/run-as-service-in-ubuntu.md)
### 2. 通過命令行终端运
### 2. 通過命令行終端運
```sh
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
```
## 升到最新版本
## 升到最新版本
您可以過停止程,替 `/usr/local/bin/gitea` 並重启来更新到新版本。直接替可執行程序时不要更改或使用新的文件名稱,以避免数据出错
您可以過停止程,替 `/usr/local/bin/gitea` 並重啟來更新到新版本。直接替可執行程式時不要更改或使用新的文件名稱,以避免資料出錯
您在更新之前進行[](../administration/backup-and-restore.md)。
您在更新之前進行[](../administration/backup-and-restore.md)。
如果您按照上述描述執行了安裝步,二進制文件的通用名稱應為 gitea。請勿更改此名稱,即不要包含版本
如果您按照上述描述執行了安裝步,二進制文件的通用名稱應為 gitea。請勿更改此名稱,即不要包含版本
### 1. 使用 systemd 重新启动 Gitea(推
### 1. 使用 systemd 重新啟動 Gitea(推
们建议使用 systemd 作為服管理器,使用 `systemctl restart gitea` 安全地重启程序
們建議使用 systemd 作為服管理器,使用 `systemctl restart gitea` 安全地重啟程式
### 2. 非 systemd 重方法
### 2. 非 systemd 重方法
使用 SIGHUP 信号关闭程序:查到 Gitea 程的 PID,使用 `kill -1 $GITEA_PID`,或者 `killall -1 gitea`
使用 SIGHUP 信號關閉程式:查到 Gitea 程的 PID,使用 `kill -1 $GITEA_PID`,或者 `killall -1 gitea`
雅的停止指令可能包括 `kill $GITEA_PID` 或者 `killall gitea`
雅的停止指令可能包括 `kill $GITEA_PID` 或者 `killall gitea`
**提示:**不建使用 SIGKILL 信`-9`),这会强制停止 Gitea 程,但不会正确关闭队列、索引器等任
**提示:**不建使用 SIGKILL 信`-9`),這會強制停止 Gitea 程,但不會正確關閉隊列、索引器等任
参阅下面的疑解答明,以在 Gitea 版本更新后修复损坏的存放庫。
參閱下面的疑解答明,以在 Gitea 版本更新後修復損壞的存放庫。
## 排查故障
### 版 glibc
### 版 glibc
版 Linux 行版(例如 Debian 7 和 CentOS 6)可能無法加 Gitea 二進制文件,通常会产生类似于 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)`错误。这是由 dl.gitea.com 提供的二進制文件中集成了 SQLite 支。在这种情况下,通常可以選[从源代码安裝](installation/from-source.md),而不包括 SQLite 支
版 Linux 行版(例如 Debian 7 和 CentOS 6)可能無法加 Gitea 二進制文件,通常會產生類似於 `./gitea: /lib/x86_64-linux-gnu/libc.so.6:
version 'GLIBC\_2.14' not found (required by ./gitea)`錯誤。這是由 dl.gitea.com 提供的二進制文件中整合了 SQLite 支。在這種情況下,通常可以選[從源程式碼安裝](installation/from-source.md),而不包括 SQLite 支
### 在另一端口上行 Gitea
### 在另一端口上行 Gitea
對於出現类似于 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use`错误,需要 Gitea 启动在另一个空闲端口上。您可以使用 `./gitea web -p $PORT` 来实現。可能已有另一 Gitea 例在行。
對於出現類似於 `702 runWeb()] [E] Failed to start server: listen tcp 0.0.0.0:3000:
bind: address already in use`錯誤,需要 Gitea 啟動在另一個空閒端口上。您可以使用 `./gitea web -p $PORT` 來實現。可能已有另一 Gitea 例在行。
### 在 Raspbian 上行 Gitea
### 在 Raspbian 上行 Gitea
v1.8 版本始,arm7 版本的 Gitea 存在问题,無法在莓派和类似设备上运行。
v1.8 版本始,arm7 版本的 Gitea 存在問題,無法在莓派和類似設備上運行。
议切换到 arm6 版本,該版本经過测试並已被明可以在莓派和类似设备上运行。
議切換到 arm6 版本,該版本經過測試並已被明可以在莓派和類似設備上運行。
### 更新到新版本的 Gitea 出現的 Git 错误
### 更新到新版本的 Gitea 出現的 Git 錯誤
如果在更新過程中,二進制文件的名稱已更改為新版本的 Gitea,現有存放庫中的 Git 钩子将不再起作用。在这种情况下,推送到存放庫时,会显示 Git 错误
如果在更新過程中,二進制文件的名稱已更改為新版本的 Gitea,現有存放庫中的 Git 鉤子將不再起作用。在這種情況下,推送到存放庫時,會顯示 Git 錯誤
```
remote: ./hooks/pre-receive.d/gitea: line 2: [...]: No such file or directory
```
错误信息中的 `[...]` 部分包含您先前 Gitea 二進制文件的路
錯誤資訊中的 `[...]` 部分包含您先前 Gitea 二進制文件的路
要解决此问题,請到管理選,並行任 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以所有子更新為包含新的二進制文件路。請注意,这将覆盖所有 Git 子,包括自定义的钩子。
要解決此問題,請到管理選,並行任 `Resynchronize pre-receive, update and post-receive hooks of all repositories`,以所有子更新為包含新的二進制文件路。請注意,這將覆蓋所有 Git 子,包括自訂的鉤子。
如果您有使用 Gitea 置的 SSH 服器,您還需要通過在管理選项中运行任 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 重新编写授权密钥文件。
如果您有使用 Gitea 置的 SSH 服器,您還需要通過在管理選項中運行任 `Update the '.ssh/authorized_keys' file with Gitea SSH keys.` 重新編寫授權密鑰文件。
> 更多经验总结,請考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
> 更多經驗總結,請考英文版 [Troubleshooting](https://docs.gitea.com/installation/install-from-binary#troubleshooting)
如果从本页中没有找到你需要的容,請访问 [帮助页](help/support.md)
如果從本頁中沒有找到你需要的容,請前往 [幫助頁](help/support.md)
@@ -6,23 +6,23 @@ aliases:
- /zh-tw/install-from-package
---
# 管理器安裝
# 套件管理器安裝
## 官方管理器
## 官方套件管理器
### macOS
macOS 平台下前我僅支通過 `brew` 安裝。如果你有安裝 [Homebrew](http://brew.sh/),你也可以查看 [二進制安裝](installation/from-binary.md)。在你安裝了 `brew` 你可以執行以下命令:
macOS 平台下前我僅支通過 `brew` 安裝。如果你有安裝 [Homebrew](http://brew.sh/),你也可以查看 [二進制安裝](installation/from-binary.md)。在你安裝了 `brew` 你可以執行以下命令:
```
brew install gitea
```
## 非官方管理器
## 非官方套件管理器
### Alpine Linux
Gitea 已包含在 Alpine Linux 的[区存儲库](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本 Gitea 官方保持同步。
Gitea 已包含在 Alpine Linux 的[區儲存庫](https://pkgs.alpinelinux.org/packages?name=gitea&branch=edge)中,版本 Gitea 官方保持同步。
```sh
apk add gitea
@@ -30,7 +30,7 @@ apk add gitea
### Arch Linux
Gitea 已经在滚动發佈行版的官方[区存儲库](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本 Gitea 官方保持同步。
Gitea 已經在滾動發佈行版的官方[區儲存庫](https://www.archlinux.org/packages/community/x86_64/gitea/)中,版本 Gitea 官方保持同步。
```sh
pacman -S gitea
@@ -38,7 +38,7 @@ pacman -S gitea
### Arch Linux ARM
官方支 [aarch64](https://archlinuxarm.org/packages/aarch64/gitea) [armv7h](https://archlinuxarm.org/packages/armv7h/gitea) 和 [armv6h](https://archlinuxarm.org/packages/armv6h/gitea) 架
官方支 [aarch64](https://archlinuxarm.org/packages/aarch64/gitea) [armv7h](https://archlinuxarm.org/packages/armv7h/gitea) 和 [armv6h](https://archlinuxarm.org/packages/armv6h/gitea) 架
```sh
pacman -S gitea
@@ -46,7 +46,7 @@ pacman -S gitea
### Gentoo Linux
滚动發佈的行版在其官方社区软件存放庫中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea),並且会随着新的 Gitea 發佈提供軟體包更新。
滾動發佈的行版在其官方社區軟件存放庫中提供了 [Gitea](https://packages.gentoo.org/packages/www-apps/gitea),並且會隨著新的 Gitea 發佈提供套件更新。
```sh
emerge gitea -va
@@ -62,29 +62,29 @@ snap install gitea
### SUSE/openSUSE
OpenSUSE 建服為 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在开发软件配置管理存儲库中找到它
OpenSUSE 建服為 [openSUSE 和 SLE](https://software.opensuse.org/download/package?package=gitea&project=devel%3Atools%3Ascm)
提供包,你可以在開發軟件設定管理儲存庫中找到它
### Windows
目前你可以過 [Chocolatey](https://chocolatey.org/) 安裝 [Gitea](https://chocolatey.org/packages/gitea)。
目前你可以過 [Chocolatey](https://chocolatey.org/) 安裝 [Gitea](https://chocolatey.org/packages/gitea)。
```sh
choco install gitea
```
你也可以 [二進制安裝](installation/from-binary.md) 。
你也可以 [二進制安裝](installation/from-binary.md) 。
### FreeBSD
可以使用 Gitea 的 FreeBSD port `www/gitea`。 請安裝预构建的二進制包:
可以使用 Gitea 的 FreeBSD port `www/gitea`。 請安裝預構建的二進制包:
```
pkg install gitea
```
對於最新版本,或使用自定义選项构建 port,請
[ port 安裝](https://www.freebsd.org/doc/handbook/ports-using.html)
對於最新版本,或使用自訂選項構建 port,請
[ port 安裝](https://www.freebsd.org/doc/handbook/ports-using.html)
```
su -
@@ -92,13 +92,13 @@ cd /usr/ports/www/gitea
make install clean
```
該 port 使用标准的 FreeBSD 文件系统布局:配置文件在 `/usr/local/etc/gitea` 目錄中,
模板、選项、插件和主`/usr/local/share/gitea` 目錄中,启动脚本在 `/usr/local/etc/rc.d/gitea` 目錄中。
該 port 使用標準的 FreeBSD 文件系統佈局:設定文件在 `/usr/local/etc/gitea` 目錄中,
模板、選項、外掛和主`/usr/local/share/gitea` 目錄中,啟動腳本在 `/usr/local/etc/rc.d/gitea` 目錄中。
要使 Gitea 作為服务运行,請`sysrc gitea_enable=YES` 並使用 `service gitea start` 命令启动它。
要使 Gitea 作為服務運行,請`sysrc gitea_enable=YES` 並使用 `service gitea start` 命令啟動它。
### 其它
如果这里没有找到你喜欢的包管理器,可以使用 Gitea 第三方軟體包。这里有一完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果這裡沒有找到你喜歡的套件管理器,可以使用 Gitea 第三方套件。這裡有一完整的列表: [awesome-gitea](https://gitea.com/gitea/awesome-gitea/src/branch/master/README.md#user-content-packages)。
如果你知道其他 Gitea 第三方軟體包,請送 PR 添加它。
如果你知道其他 Gitea 第三方套件,請送 PR 添加它。
@@ -6,40 +6,40 @@ aliases:
- /zh-tw/install-from-source
---
# 使用源代码安裝
# 使用源程式碼安裝
你需要 [安裝 Go](https://golang.google.cn/doc/install) 並正确设置 Go 境。特的,建议设置`$GOPATH`环境变量,並 Go 的二進制目錄或目錄`${GOPATH//://bin:}/bin`添加到`$PATH`中。請参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的詞
你需要 [安裝 Go](https://golang.google.cn/doc/install) 並正確設定 Go 境。特的,建議設定`$GOPATH`環境變量,並 Go 的二進制目錄或目錄`${GOPATH//://bin:}/bin`添加到`$PATH`中。請參閱 Go 百科上關於 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的詞
接下[安裝 Node.js 和 npm](https://nodejs.org/zh-tw/download/) 这是构建 JavaScript 和 CSS 文件所需的。最低支的 Node.js 版本是 @minNodeVersion@,建使用最新的 LTS 版本。
接下[安裝 Node.js 和 npm](https://nodejs.org/zh-tw/download/) 這是構建 JavaScript 和 CSS 文件所需的。最低支的 Node.js 版本是 @minNodeVersion@,建使用最新的 LTS 版本。
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不過,建议获取与我们的持续集成continuous integration, CI)相同的版本,請参阅在 [Hacking on Gitea](development/hacking-on-gitea.md) 中出的建
**注意**:需要 Go 版本 @minGoVersion@ 或更高版本。不過,建議獲取與我們的持續整合continuous integration, CI)相同的版本,請參閱在 [Hacking on Gitea](development/hacking-on-gitea.md) 中出的建
## 下
## 下
首先,我需要取源。由引入了 Go 模組,最單的方法是直接使用 Git,因為我不再需要在 GOPATH 内构建 Gitea。
首先,我需要取源。由引入了 Go 模組,最單的方法是直接使用 Git,因為我不再需要在 GOPATH 內構建 Gitea。
```bash
git clone https://github.com/go-gitea/gitea
```
(之前的版本中建使用 `go get`,但現在不再需要。)
(之前的版本中建使用 `go get`,但現在不再需要。)
你可以選择编译和安裝的版本,前有多个選择`main` 分支代表前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [](#) 部分。
你可以選擇編譯和安裝的版本,前有多個選擇`main` 分支代表前的開發版本。如果你想編譯 `main` 版本,你可以直接跳到 [](#) 部分。
如果你想编译带有標籤的行版本,可以使用以下命令出:
如果你想編譯帶有標籤的行版本,可以使用以下命令出:
```bash
git branch -a
git checkout @sourceBranch@
```
要驗證一拉取請求(Pull Request, PR),要先用新的分支(其中 `xyz` 是 PR 的 ID;例如,對於 [#2663](https://github.com/go-gitea/gitea/pull/2663)ID 是 `2663 `):
要驗證一拉取請求(Pull Request, PR),要先用新的分支(其中 `xyz` 是 PR 的 ID;例如,對於 [#2663](https://github.com/go-gitea/gitea/pull/2663)ID 是 `2663 `):
```bash
git fetch origin pull/xyz/head:pr-xyz
```
要以指定行版本(如 @sourceVersion@ )的源代码来构建 Gitea,可執行以下命令列出可用的版本並選择某个版本出。
要以指定行版本(如 @sourceVersion@ )的源程式碼來構建 Gitea,可執行以下命令列出可用的版本並選擇某個版本出。
使用以下命令列出可用的版本:
```bash
@@ -47,115 +47,116 @@ git tag -l
git checkout @sourceVersion@ # or git checkout pr-xyz
```
## 构建
<a id="build"></a>
## 構建
从源代码進行建,系必須先安裝以下程
從源程式碼進行建,系必須先安裝以下程
- `go` @minGoVersion@ 或更高版本,請参阅 [这里](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,並且安裝 `npm`, 請参阅 [这里](https://nodejs.org/zh-tw/download/)
- `make`, 請参阅 [这里](development/hacking-on-gitea.md)
- `go` @minGoVersion@ 或更高版本,請參閱 [這裡](https://go.dev/dl/)
- `node` @minNodeVersion@ 或更高版本,並且安裝 `npm`, 請參閱 [這裡](https://nodejs.org/zh-tw/download/)
- `make`, 請參閱 [這裡](development/hacking-on-gitea.md)
為了可能简化编译過程,提供了各 [make 任](https://github.com/go-gitea/gitea/blob/main/Makefile)。
為了可能簡化編譯過程,提供了各 [make 任](https://github.com/go-gitea/gitea/blob/main/Makefile)。
你的建需求,以下 tags 可以使用:
你的建需求,以下 tags 可以使用:
- `bindata`: 建一單一的整體二進制文件,包含所有源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支。僅建在少人使用使用这个模式。
- `pam`: 启用对 PAM( Linux 可插拔認證模組)的支。可用于对本地使用者進行身份驗證或展身份驗證到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 體的 Git 命令。
- `bindata`: 建一單一的整體二進制文件,包含所有源。適用於構建生產環境版本。
- `sqlite sqlite_unlock_notify`: 啟用對 [SQLite3](https://sqlite.org/) 資料庫的支。僅建在少人使用使用這個模式。
- `pam`: 啟用對 PAM( Linux 可插拔認證模組)的支。可用於對本地使用者進行身份驗證或展身份驗證到 PAM 可用的方法。
- `gogit`:(實驗性功能)使用 go-git 體的 Git 命令。
所有源(JS/CSS/模板等)打包到二進制文件中。在生产环境部署,使用`bindata`建標籤是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`
所有源(JS/CSS/模板等)打包到二進制文件中。在生產環境部署,使用`bindata`建標籤是必需的。在開發/測試 Gitea 或能夠明確分離資源時,可以不用`bindata`
要包含所有源,請使用 `bindata` 標籤:
要包含所有源,請使用 `bindata` 標籤:
```bash
TAGS="bindata" make build
```
在我的持续集成系统的默认发行版中,建標籤為:`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最單、推方式是:
在我的持續整合系統的預設發行版中,建標籤為:`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,從源碼構建的最單、推方式是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build`分為两个子目
`build`分為兩個子目
- `make backend` 需要 [Go @minGoVersion@](https://golang.google.cn/doc/install) 或更高版本。
- `make frontend` 需要 [Node.js @minNodeVersion@](https://nodejs.org/zh-tw/download/) 或更高版本。
如果存在预构建的前端文件,可以僅构建后端:
如果存在預構建的前端文件,可以僅構建後端:
```bash
TAGS="bindata" make backend
```
## 测试
## 測試
按照上述步完成,工作目錄中将会有一`gitea`二進制文件。可以該目錄進行测试,或其移动到带有测试数据的目錄中。当手动从命令行启动 Gitea ,可以過按下`Ctrl + C`停止程
按照上述步完成,工作目錄中將會有一`gitea`二進制文件。可以該目錄進行測試,或其移動到帶有測試資料的目錄中。當手動從命令行啟動 Gitea ,可以過按下`Ctrl + C`停止程
```bash
./gitea web
```
## 更改默认路径
## 更改預設路徑
Gitea 将从`CustomPath`中查找许多信息。默认的,这会在运行 Gitea 时当前工作目錄下的`custom/`目錄中(者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它還`$(CustomPath)/conf/app.ini`中查找其配置文件`CustomConf`,並将当前工作目錄用作一些可配置值的相基本路`AppWorkPath`。最后,静态文件将从默认`AppWorkPath``StaticRootPath`提供。
Gitea 將從`CustomPath`中查找許多資訊。預設的,這會在運行 Gitea 時當前工作目錄下的`custom/`目錄中(者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它還`$(CustomPath)/conf/app.ini`中查找其設定文件`CustomConf`,並將當前工作目錄用作一些可設定值的相基本路`AppWorkPath`。最後,靜態文件將從預設`AppWorkPath``StaticRootPath`提供。
管在开发时这些值很有用,但可能下游使用者的偏好突。
管在開發時這些值很有用,但可能下游使用者的偏好突。
种選择是使用本文件来隐`gitea`二進制文件,並在行 Gitea 之前建立适当的环境。然而,在构建时,可以使用`make``LDFLAGS`环境变量来更改这些默认值。适当的设置如下:
種選擇是使用本文件來隱`gitea`二進制文件,並在行 Gitea 之前建立適當的環境。然而,在構建時,可以使用`make``LDFLAGS`環境變量來更改這些預設值。適當的設定如下:
-设置`CustomPath`,請使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
-設定`CustomPath`,請使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 對於`CustomConf`,應該使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 對於`AppWorkPath`,應該使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 對於`StaticRootPath`,應該使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的 PID 文件位置,請使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
- 要更改預設的 PID 文件位置,請使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`
将这些字符串其前`-X`添加到`LDFLAGS`量中,並像上面那使用适当`TAGS``make build`
將這些字符串其前`-X`添加到`LDFLAGS`量中,並像上面那使用適當`TAGS``make build`
`gitea help`将允许您查看配置`gitea`设置
`gitea help`將允許您查看設定`gitea`設定
## 交叉编译
## 交叉編譯
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。請考[`GOOS`和`GOARCH`环境变](https://go.dev/doc/install/source#environment) 以取支的目列表。如果您想為性能弱的系(如莓派)建 Gitea,交叉编译非常有用。
`go`編譯器工具鏈支援將程式碼交叉編譯到不同的目標架構上。請考[`GOOS`和`GOARCH`環境變](https://go.dev/doc/install/source#environment) 以取支的目列表。如果您想為性能弱的系(如莓派)建 Gitea,交叉編譯非常有用。
要使用建標籤(`TAGS`)進行交叉编译 Gitea,您還需要一 C 交叉编译器,該编译器的目标架构与`GOOS``GOARCH`量選的架相同。例如,要為 Linux ARM64`GOOS=linux``GOARCH=arm64`)進行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。是因為 Gitea 建標籤使用了`cgo`的外部函数接口FFI)。
要使用建標籤(`TAGS`)進行交叉編譯 Gitea,您還需要一 C 交叉編譯器,該編譯器的目標架構與`GOOS``GOARCH`量選的架相同。例如,要為 Linux ARM64`GOOS=linux``GOARCH=arm64`)進行交叉編譯,您需要`aarch64-unknown-linux-gnu-gcc`交叉編譯器。是因為 Gitea 建標籤使用了`cgo`的外部函數介面FFI)。
有任何標籤的情下,交叉编译的 Gitea 為 Linux ARM64 版本:
有任何標籤的情下,交叉編譯的 Gitea 為 Linux ARM64 版本:
```
GOOS=linux GOARCH=arm64 make build
```
要交叉编译 Linux ARM64 下的 Gitea是推荐的构建標籤:
要交叉編譯 Linux ARM64 下的 Gitea是推薦的構建標籤:
```
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sqlite_unlock_notify" make build
```
您的目标架构,适当替换`CC``GOOS``GOARCH`
您的目標架構,適當替換`CC``GOOS``GOARCH`
您需要建一个静态编译的镜像。為此,您需要添加以下容:
您需要建一個靜態編譯的鏡像。為此,您需要添加以下容:
```
LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo $TAGS" make build
```
可以上述的`CC``GOOS``GOARCH`合使用。
可以上述的`CC``GOOS``GOARCH`合使用。
### 添加 bash/zsh 自动补全( 1.19 版本起)
### 添加 bash/zsh 自動補全( 1.19 版本起)
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一个启用 bash 自动补全的本。您可以根需要進行修改,並在您的 `.bashrc` 中使用 `source` 命令加载該脚本,或者将其复制`/usr/share/bash-completion/completions/gitea`
在[`contrib/autocompletion/bash_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete)中可以找到一個啟用 bash 自動補全的本。您可以根需要進行修改,並在您的 `.bashrc` 中使用 `source` 命令加載該腳本,或者將其複製`/usr/share/bash-completion/completions/gitea`
似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的本。您可以将其复制`/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载該脚本。
似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一個用於 zsh 自動補全的本。您可以將其複製`/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加載該腳本。
可能需要你根具體情進一步改進这些脚本。
可能需要你根具體情進一步改進這些腳本。
## 在 Linux 上使用 Zig 進行编译或交叉编译
## 在 Linux 上使用 Zig 進行編譯或交叉編譯
請按照 [Zig 的入指南](https://ziglang.org/learn/getting-started/#installing-zig) 安裝 Zig。
請按照 [Zig 的入指南](https://ziglang.org/learn/getting-started/#installing-zig) 安裝 Zig。
- 编译 (Linux ➝ Linux)
- 編譯 (Linux ➝ Linux)
```sh
CC="zig cc -target x86_64-linux-gnu" \
@@ -168,7 +169,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```
- 交叉编译 (Linux ➝ Windows)
- 交叉編譯 (Linux ➝ Windows)
```sh
CC="zig cc -target x86_64-windows-gnu" \
@@ -180,11 +181,11 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```
## 在 Windows 上使用 Zig 進行编译或交叉编译
## 在 Windows 上使用 Zig 進行編譯或交叉編譯
使用`GIT BASH`编译
使用`GIT BASH`編譯
- 编译 (Windows ➝ Windows)
- 編譯 (Windows ➝ Windows)
```sh
CC="zig cc -target x86_64-windows-gnu" \
@@ -196,7 +197,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```
- 交叉编译 (Windows ➝ Linux)
- 交叉編譯 (Windows ➝ Linux)
```sh
CC="zig cc -target x86_64-linux-gnu" \
@@ -211,8 +212,8 @@ make build
## Source Map
默认情况下,gitea 為前端文件生成精的 Source Map 以省空可以過“ENABLE_SOURCEMAP”环境变量進行控制:
預設情況下,gitea 為前端文件生成精的 Source Map 以省空可以過“ENABLE_SOURCEMAP”環境變量進行控制:
- `ENABLE_SOURCEMAP=true` 生成所有 Source Map这是开发版本的默认设置
- `ENABLE_SOURCEMAP=reduced` 生成有限的 Source Map是生版本的默认设置
- `ENABLE_SOURCEMAP=true` 生成所有 Source Map這是開發版本的預設設定
- `ENABLE_SOURCEMAP=reduced` 生成有限的 Source Map是生版本的預設設定
- `ENABLE_SOURCEMAP=false` 不生成 Source Map
@@ -6,37 +6,37 @@ aliases:
- /zh-tw/install-on-cloud-provider
---
# 在云服务器上安裝 Gitea
# 在雲伺服器上安裝 Gitea
## Cloudron
Gitea 可以在 [Cloudron](https://cloudron.io) 上進行一安裝。
Cloudron 使得在您的服器上行 Gitea,並保持其更新和安全变得简單。
Gitea 可以在 [Cloudron](https://cloudron.io) 上進行一安裝。
Cloudron 使得在您的服器上行 Gitea,並保持其更新和安全變得簡單。
[![Install](/cloudron.svg)](https://cloudron.io/button.html?app=io.gitea.cloudronapp)
Gitea 軟體包的维护地址在[这里](https://git.cloudron.io/cloudron/gitea-app).
Gitea 套件的維護地址在[這裡](https://git.cloudron.io/cloudron/gitea-app).
这里有一[demo ](https://my.demo.cloudron.io) (使用者名: cloudron 密碼: cloudron) 您可以在其中尝试运行 Gitea。
這裡有一[demo ](https://my.demo.cloudron.io) (使用者名: cloudron 密碼: cloudron) 您可以在其中嘗試運行 Gitea。
## Linode
[Linode](https://www.linode.com/) Gitea 作為其市中的一應用程.
[Linode](https://www.linode.com/) Gitea 作為其市中的一應用程.
Gitea 部署到 Linode, 請考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
Gitea 部署到 Linode, 請考 [Linode Marketplace](https://www.linode.com/marketplace/apps/linode/gitea/).
## alwaysdata
[alwaysdata](https://www.alwaysdata.com/) Gitea 作為其市中的一 droplet.
[alwaysdata](https://www.alwaysdata.com/) Gitea 作為其市中的一 droplet.
Gitea 部署到 alwaysdata, 請考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
Gitea 部署到 alwaysdata, 請考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).
## Exoscale
[Exoscale](https://www.exoscale.com/) 在其市中提供由 [Glasskube](https://glasskube.eu/) 管理的 Gitea。
[Exoscale](https://www.exoscale.com/) 在其市中提供由 [Glasskube](https://glasskube.eu/) 管理的 Gitea。
Exoscale 是一家洲的云服务提供商。
Exoscale 是一家洲的雲服務提供商。
軟體包通過源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 進行维护和更新。
套件通過源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 進行維護和更新。
要在 Exoscale 上部署 Gitea,請考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
要在 Exoscale 上部署 Gitea,請考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
@@ -8,9 +8,9 @@ aliases:
# 在 Kubernetes 中安裝 Gitea
Gitea 已提供了便在 Kubernetes 原生境中安裝所需的 Helm Chart
Gitea 已提供了便在 Kubernetes 原生境中安裝所需的 Helm Chart
默认安裝指令為:
預設安裝指令為:
```bash
helm repo add gitea https://dl.gitea.com/charts
@@ -18,21 +18,21 @@ helm repo update
helm install gitea gitea/gitea
```
如果采用默认安裝指令,Helm 部署單例的 Gitea, PostgreSQL, Memcached。若您想現自定义安裝(包括配置 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久儲等),請前往阅读[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
如果採用預設安裝指令,Helm 部署單例的 Gitea, PostgreSQL, Memcached。若您想現自安裝(包括設定 Gitea 集群、NGINX Ingress、MySQL、MariaDB、持久儲等),請前往閱讀[Gitea Helm Chart](https://gitea.com/gitea/helm-chart/)
您也可以`helm show` 命令`README.md`配置文件 `values.yaml` 進行学习和编辑,例如:
您也可以`helm show` 命令`README.md`設定文件 `values.yaml` 進行學習和編輯,例如:
```bash
helm show values gitea/gitea > values.yaml
helm show readme gitea/gitea > README.md
# 使用自定的配置文件 values.yaml
# 使用自定的配置文件 values.yaml
helm install gitea -f values.yaml gitea/gitea
```
## 运行状况检查接口
## 運行狀況檢查介面
Gitea 附了一个运行状况检查接口 `/api/healthz`,你可以像这样在 Kubernetes 中配置它:
Gitea 附了一個運行狀況檢查介面 `/api/healthz`,你可以像這樣在 Kubernetes 中設定它:
```yaml
livenessProbe:
@@ -46,7 +46,7 @@ livenessProbe:
failureThreshold: 10
```
成功的运行状况检查響應代码為 HTTP `200`,下面是例:
成功的運行狀況檢查響應程式碼為 HTTP `200`,下面是例:
```json
HTTP/1.1 200 OK
@@ -71,4 +71,4 @@ HTTP/1.1 200 OK
}
```
更多信息,請考 Kubernetes 文 [配置存活、就绪和启动探测](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
更多資訊,請考 Kubernetes 文 [設定存活、就緒和啟動探測](https://kubernetes.io/zh-tw/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)
@@ -6,9 +6,9 @@ aliases:
- /zh-tw/linux-service
---
# 在 Linux 中以 service 方式
# 在 Linux 中以 service 方式
## 在 Ubuntu 16.04 LTS 中以 service 方式
## 在 Ubuntu 16.04 LTS 中以 service 方式
### systemd 方式
@@ -18,11 +18,11 @@ aliases:
sudo vim /etc/systemd/system/gitea.service
```
着拷贝示例代码 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 並取消任何需要行在主上的服部分的注释,譬如 MySQL。
著拷貝範例程式碼 [gitea.service](https://github.com/go-gitea/gitea/blob/main/contrib/systemd/gitea.service) 並取消任何需要行在主上的服部分的註釋,譬如 MySQL。
修改 user,home 目錄以及其他必須的初始化參數,如果使用自定义端口,需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记
修改 user,home 目錄以及其他必須的初始化參數,如果使用自端口,需修改 PORT 參數,反之如果使用預設端口則需刪除 -p 標記
激活 gitea 並它作為系统自启动服务
激活 gitea 並它作為系統自啟動服務
```
sudo systemctl enable gitea
@@ -37,25 +37,25 @@ sudo systemctl start gitea
sudo apt install supervisor
```
為 supervisor 配置日志路径
為 supervisor 設定日誌路徑
```
# assuming gitea is installed in /home/git/gitea/
mkdir /home/git/gitea/log/supervisor
```
在文件编辑器中打 supervisor 的配置文件:
在文件編輯器中打 supervisor 的設定文件:
```
sudo vim /etc/supervisor/supervisord.conf
```
增加如下示例配置
增加如下範例設定
[supervisord config](https://github.com/go-gitea/gitea/blob/main/contrib/supervisor/gitea)。
user(git) 和 home(/home/git) 设置為与上文部署中匹配的值。如果使用自定义端口,需修改 PORT 參數,反之如果使用默认端口则需删除 -p 标记
user(git) 和 home(/home/git) 設定為與上文部署中匹配的值。如果使用自端口,需修改 PORT 參數,反之如果使用預設端口則需刪除 -p 標記
激活 supervisor 並它作為系统自启动服务
激活 supervisor 並它作為系統自啟動服務
```
sudo systemctl enable supervisor
@@ -4,83 +4,83 @@ slug: "upgrade-from-gitea"
sidebar_position: 100
---
# 从旧版 Gitea 升
# 從舊版 Gitea 升
在升之前,您需要做如下的准备工作。
在升之前,您需要做如下的準備工作。
## 為重大变更检查更新日
## 為重大變更檢查更新日
為了 Gitea 得更好,進行重大更是不可避免的,尤其是一些里程碑更新的發佈。
在更新前,請 [在 Gitea 博客上阅读更新日](https://blog.gitea.com/)
查重大更是否影響你的 Gitea 例。
為了 Gitea 得更好,進行重大更是不可避免的,尤其是一些里程碑更新的發佈。
在更新前,請 [在 Gitea 部落格上閱讀更新日](https://blog.gitea.com/)
查重大更是否影響你的 Gitea 例。
## 在控制面板中查過期的配置项
## 在控制面板中查過期的設定項
一些配置项可能会在后续版本中過期,你需要在控制面板中查他。如果不解過期的配置项
Gitea也许会在升级后無法重。你可以访问 https://docs.gitea.com 得要升的版本
應的文檔来修改你的配置文件。
一些設定項可能會在後續版本中過期,你需要在控制面板中查他。如果不解過期的設定項
Gitea也許會在升級後無法重。你可以訪問 https://docs.gitea.com 得要升的版本
應的文件來修改你的設定文件。
## 降前的
## 降前的
Gitea 保留首二位版本相同的版本的容性 (`a.b.x` -> `a.b.y`)
些版本有相同的数据库结构,可以自由升或降
其他情 (`a.b.?` -> `a.c.?`)下,
新版 Gitea 可能将会将数据库升级到与旧版数据库不同的结构
Gitea 保留首二位版本相同的版本的容性 (`a.b.x` -> `a.b.y`)
些版本有相同的資料庫結構,可以自由升或降
其他情 (`a.b.?` -> `a.c.?`)下,
新版 Gitea 可能將會將資料庫升級到與舊版資料庫不同的結構
举个例子:
舉個例子:
| 前 | 目 | 果 |
| 前 | 目 | 果 |
| --- | --- | --- |
| 1.4.0 | 1.4.1 | ✅ |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,它可以正常工作。我们强烈建议降级前進行完全的份。 |
| 1.4.x | 1.5.y | ✅ 数据库会被自动升级。你可以直接 1.4.x 升到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升且無法用于旧版本Gitea,使用备份来進行降。 |
| 1.4.1 | 1.4.0 | ⚠️ 不建議,後果自負!儘管資料庫結構可能不會變更,它可以正常工作。我們強烈建議降級前進行完全的份。 |
| 1.4.x | 1.5.y | ✅ 資料庫會被自動升級。你可以直接 1.4.x 升到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 資料庫已被升且無法用於舊版本Gitea,使用備份來進行降。 |
**因為你不能基于升级后的数据库运行旧版 Gitea,所以你應該在数据库升级前完成数据备份。**
**因為你不能基於升級後的資料庫運行舊版 Gitea,所以你應該在資料庫升級前完成資料備份。**
如果你在生产环境下使用 Gitea,你應該在升前做好份,哪怕只是小版本的丁更新。
如果你在生產環境下使用 Gitea,你應該在升前做好份,哪怕只是小版本的丁更新。
份步:
份步:
* 停止 Gitea
* 备份数据库
* 份 Gitea 配置文件
* 份 Gitea 在 `APP_DATA_PATH` 中的数据文件
* 份 Gitea 的外部儲 (例如: S3/MinIO 或被使用的其他儲)
* 停止 Gitea
* 備份資料庫
* 份 Gitea 設定文件
* 份 Gitea 在 `APP_DATA_PATH` 中的資料文件
* 份 Gitea 的外部儲 (例如: S3/MinIO 或被使用的其他儲)
如果你在使用云服务或拥有快照功能的文件系
最好 Gitea 的数据盘及相关资料存儲進行一次快照。
如果你在使用雲服務或擁有快照功能的文件系
最好 Gitea 的資料盤及相關資料儲存進行一次快照。
在所有上述步骤准备妥当之后,要升 Gitea,只需要下新版,停止运行旧版,進行数据备份,然后运行新版就好。
每次 Gitea 实例启动时,它都会检查是否要進行数据库迁移。
如果需要進行数据库迁移,Gitea 花一些时间完成升级然后继续服务
在所有上述步驟準備妥當之後,要升 Gitea,只需要下新版,停止運行舊版,進行資料備份,然後運行新版就好。
每次 Gitea 實例啟動時,它都會檢查是否要進行資料庫遷移。
如果需要進行資料庫遷移,Gitea 花一些時間完成升級然後繼續服務
## Docker 升
## Docker 升
* `docker pull` 拉取 Gitea 的最新發佈版。
* 停止行中的例,备份数据
* 使用 `docker``docker-compose` 启动较新的 Gitea Docker 容器.
* 停止行中的例,備份資料
* 使用 `docker``docker-compose` 啟動較新的 Gitea Docker 容器.
## 包升
## 包升
* 停止行中的例,备份数据
* 使用你的管理器更新 Gitea 到最新版本。
* 启动 Gitea 例。
* 停止行中的例,備份資料
* 使用你的套件管理器更新 Gitea 到最新版本。
* 啟動 Gitea 例。
## 二進制升
## 二進制升
*最新的 Gitea 二進制文件到临时文件中。
* 停止行中的例,备份数据
* 将旧的 Gitea 二進制文件覆成新的。
* 启动 Gitea 例。
*最新的 Gitea 二進制文件到臨時文件中。
* 停止行中的例,備份資料
* 將舊的 Gitea 二進制文件覆成新的。
* 啟動 Gitea 例。
在 Linux 系上自執行以上步骤的脚本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 来获](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
在 Linux 系上自執行以上步驟的腳本可在 [Gitea 的 source tree 中找到 `contrib/upgrade.sh` 來獲](https://github.com/go-gitea/gitea/blob/main/contrib/upgrade.sh).
## 小心你的自定义模板
## 小心你的自模板
Gitea 的模板结构与变量可能会随着各个版本的發佈发生变化,如果你使用了自定义模板,
你得注意你的模板你使用的 Gitea 版本的容性。
Gitea 的模板結構與變量可能會隨著各個版本的發佈發生變化,如果你使用了自模板,
你得注意你的模板你使用的 Gitea 版本的容性。
如果自定义模板 Gitea 版本不容,你可能遇到:
`50x` 服务器错误,页面元素失或故障,莫名其妙的页面布局,等等…
移除或更新不容的模板,Gitea Web 可以正常工作。
如果自模板 Gitea 版本不容,你可能遇到:
`50x` 伺服器錯誤,頁面元素失或故障,莫名其妙的頁面佈局,等等…
移除或更新不容的模板,Gitea Web 可以正常工作。
@@ -6,9 +6,9 @@ aliases:
- /zh-tw/windows-service
---
# 注册為 Windows 服
# 註冊為 Windows 服
## 准备工作
## 準備工作
在 C:\gitea\custom\conf\app.ini 中進行了以下更改:
@@ -16,53 +16,53 @@ aliases:
RUN_USER = COMPUTERNAME$
```
Gitea 设置為以本地系使用者行。
Gitea 設定為以本地系使用者行。
COMPUTERNAME 是命令行中行 `echo %COMPUTERNAME%` 得到的響應。如果響應是 `USER-PC`,那 `RUN_USER = USER-PC$`。
COMPUTERNAME 是命令行中行 `echo %COMPUTERNAME%` 得到的響應。如果響應是 `USER-PC`,那 `RUN_USER = USER-PC$`。
### 使用绝对路径
### 使用絕對路徑
如果您使用 SQLite3,請 `PATH` 更改為包含完整路
如果您使用 SQLite3,請 `PATH` 更改為包含完整路
```ini title="app.ini"
[database]
PATH = c:/gitea/data/gitea.db
```
## 注册為 Windows 服
## 註冊為 Windows 服
注册為 Windows 服,首先以 Administrator 身份行 `cmd`,然執行以下命令:
註冊為 Windows 服,首先以 Administrator 身份行 `cmd`,然執行以下命令:
```
sc.exe create gitea start= auto binPath= "\"C:\gitea\gitea.exe\" web --config \"C:\gitea\custom\conf\app.ini\""
```
忘了 `C:\gitea` 替成你的 Gitea 安裝目錄。
忘了 `C:\gitea` 替成你的 Gitea 安裝目錄。
在控制面板打 "Windows Services",搜索 "gitea",右键選择 "Run"。在浏览器打 `http://localhost:3000` 就可以访问了。(如果你修改了端口,請访问对應的端口,3000 是默认端口)。
在控制面板打 "Windows Services",搜索 "gitea",右鍵選擇 "Run"。在瀏覽器打 `http://localhost:3000` 就可以訪問了。(如果你修改了端口,請前往對應的端口,3000 是預設端口)。
### 服务启动類型
### 服務啟動類型
据观察,在启动期间加载的系上,Gitea 服可能無法启动,並在 Windows 事件日志中记录超时
这种情况下,将启动類型更改為`Automatic-Delayed`。可以在服建立期完成,或者通過运行配置命令完成。
據觀察,在啟動期間加載的系上,Gitea 服可能無法啟動,並在 Windows 事件日誌中記錄超時
這種情況下,將啟動類型更改為`Automatic-Delayed`。可以在服建立期完成,或者通過運行設定命令完成。
```
sc.exe config gitea start= delayed-auto
```
### 添加启动依赖项
### 添加啟動依賴項
将启动依赖项添加到 Gitea Windows 服(例如 Mysql、Mariadb),作為管理,然后运行以下命令:
將啟動依賴項添加到 Gitea Windows 服(例如 Mysql、Mariadb),作為管理,然後運行以下命令:
```
sc.exe config gitea depend= mariadb
```
这将确保在 Windows 计算机重新启动时,将延迟自动启动 Gitea,直到数据库准备就绪,从而减少启动失败的情
這將確保在 Windows 計算機重新啟動時,將延遲自動啟動 Gitea,直到資料庫準備就緒,從而減少啟動失敗的情
## Windows 服务中删
## Windows 服務中刪
以 Administrator 身份行 `cmd`,然執行以下命令:
以 Administrator 身份行 `cmd`,然執行以下命令:
```
sc.exe delete gitea
@@ -8,17 +8,17 @@ aliases:
# 使用 Docker 安裝 (rootless)
Gitea 在其 Docker Hub 組織中提供自更新的 Docker 像。您可以始使用最新的定標籤,或使用其他理 Docker 像更新的服
Gitea 在其 Docker Hub 組織中提供自更新的 Docker 像。您可以始使用最新的定標籤,或使用其他理 Docker 像更新的服
rootless 像使用 Gitea 部 SSH 功能提供 Git 协议,但不支 OpenSSH。
rootless 像使用 Gitea 部 SSH 功能提供 Git 協議,但不支 OpenSSH。
参考设置指南使用者引通過基 `docker-compose`设置。但是,`docker-compose` 的安裝超出了本文檔的范围。要安裝`docker-compose` 本身, 請按照官方的 [安裝](https://docs.docker.com/compose/install/)進行操作。
參考設定指南使用者引通過基 `docker-compose`設定。但是,`docker-compose` 的安裝超出了本文件的範圍。要安裝`docker-compose` 本身, 請按照官方的 [安裝](https://docs.docker.com/compose/install/)進行操作。
## 基础设置
## 基礎設定
單的设置只需建立一卷和一个网络,並 `docker.gitea.com/gitea:latest-rootless` 像作為服务启动。由于没有可用的数据库,可以使用 SQLite3 初始化一
單的設定只需建立一卷和一個網路,並 `docker.gitea.com/gitea:latest-rootless` 像作為服務啟動。由於沒有可用的資料庫,可以使用 SQLite3 初始化一
建立一名為 `data``config`:
建立一名為 `data``config`:
```sh
mkdir -p gitea/{data,config}
@@ -26,7 +26,7 @@ cd gitea
touch docker-compose.yml
```
后将以下容粘到名為 `docker-compose.yml` 的文件中:
後將以下容粘到名為 `docker-compose.yml` 的文件中:
```yaml
version: "2"
@@ -45,19 +45,19 @@ services:
- "2222:2222"
```
請注意,卷應由在配置文件中指定的 UID/GID 的使用者/所有。默认情况下,Docker 中的 Gitea 使用 uid:1000 gid:1000。如果需要,您可以使用以下命令设置这些文件的所有
請注意,卷應由在設定文件中指定的 UID/GID 的使用者/所有。預設情況下,Docker 中的 Gitea 使用 uid:1000 gid:1000。如果需要,您可以使用以下命令設定這些文件的所有
```sh
sudo chown 1000:1000 config/ data/
```
> 如果未為卷设置正确的权限,容器可能無法启动
> 如果未為卷設定正確的權限,容器可能無法啟動
對於定版本,您可以使用 `:latest-rootless``:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,可以使用 `:dev-rootless` 標籤。如果您想行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本(例如:`1.16-dev-rootless`)。
對於定版本,您可以使用 `:latest-rootless``:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的開發版本,可以使用 `:dev-rootless` 標籤。如果您想行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本(例如:`1.16-dev-rootless`)。
## 自定义端口
## 自端口
将集成的 SSH 和 Web 服务器绑定到不同的端口,請整端口部分。通常只需更改主端口並保持容器的端口不
將整合的 SSH 和 Web 伺服器綁定到不同的端口,請調整端口部分。通常只需更改主端口並保持容器的端口不
```diff
version: "2"
@@ -78,9 +78,9 @@ services:
+ - "22:2222"
```
## MySQL 数据库
## MySQL 資料庫
Gitea MySQL 数据库结合使用,請上面建立的 `docker-compose.yml` 文件進行以下更改。
Gitea MySQL 資料庫結合使用,請上面建立的 `docker-compose.yml` 文件進行以下更改。
```diff
version: "2"
@@ -118,9 +118,9 @@ services:
+ - ./mysql:/var/lib/mysql
```
## PostgreSQL 数据库
## PostgreSQL 資料庫
Gitea PostgreSQL 数据库结合使用,請上面建立的 `docker-compose.yml` 文件進行以下更改。
Gitea PostgreSQL 資料庫結合使用,請上面建立的 `docker-compose.yml` 文件進行以下更改。
```diff
version: "2"
@@ -159,7 +159,7 @@ services:
## 命名卷 (Named Volumes)
要使用命名卷 (Named Volumes) 而不是主卷 (Host Volumes),請在 `docker-compose.yml` 配置中定和使用命名卷。这样的更改将自动建立所需的卷。您不需要担心权限问题Docker 会自动处理。
要使用命名卷 (Named Volumes) 而不是主卷 (Host Volumes),請在 `docker-compose.yml` 設定中定和使用命名卷。這樣的更改將自動建立所需的卷。您不需要擔心權限問題Docker 會自動處理。
```diff
version: "2"
@@ -186,13 +186,13 @@ services:
- "2222:2222"
```
MySQL 或 PostgreSQL 容器需要單建立。
MySQL 或 PostgreSQL 容器需要單建立。
## 自定义使用者
## 自使用者
你可以選使用自定义使用者 (遵循 --user 标志定义 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主使用者 `git` 的定,請使用命令 `id -u git`其添加到 `docker-compose.yml` 文件中:
使用者对保挂载的文件具有写权限。
你可以選使用自使用者 (遵循 --user 標誌定義 https://docs.docker.com/engine/reference/run/#user)。
例如,要克隆主使用者 `git` 的定,請使用命令 `id -u git`其添加到 `docker-compose.yml` 文件中:
使用者對保掛載的文件具有寫權限。
```diff
version: "2"
@@ -212,53 +212,53 @@ services:
- "2222:2222"
```
## 启动
## 啟動
启动基于 `docker-compose`这个设置,請執行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正确启动。可以使用 `docker-compose logs` 命令查看日
啟動基於 `docker-compose`這個設定,請執行 `docker-compose up -d`,以在後臺啟動 Gitea。使用 `docker-compose ps` 命令可以查看 Gitea 是否正確啟動。可以使用 `docker-compose logs` 命令查看日
关闭设置,請執行 `docker-compose down` 命令。这将停止和止容器,但卷仍存在。
關閉設定,請執行 `docker-compose down` 命令。這將停止和止容器,但卷仍存在。
注意:如果在 HTTP 上使用的是非 3000 端口,請 app.ini 更改為匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
注意:如果在 HTTP 上使用的是非 3000 端口,請 app.ini 更改為匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
## 安裝
在通過 `docker-compose` 启动 Docker 设置后,可以使用喜爱的浏览器访问 Gitea,完成安裝過程。访问 `http://<服器-IP>:3000` 並按照安裝向导進行操作。如果数据库是使用上述文中的 `docker-compose` 设置启动的,請注意必須使用 `db` 作為数据库主机名。
在通過 `docker-compose` 啟動 Docker 設定後,可以使用喜愛的瀏覽器訪問 Gitea,完成安裝過程。訪問 `http://<服器-IP>:3000` 並按照安裝嚮導進行操作。如果資料庫是使用上述文中的 `docker-compose` 設定啟動的,請注意必須使用 `db` 作為資料庫主機名。
## 自定义
## 自
定义文件的位置位 `/var/lib/gitea/custom` 目錄中,可以在这里找到有关自定义的文件明。如果使用主卷(host volumes),很容易访问这些文件;如果使用命名卷(named volumes),可以過另一容器或直接访问 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea` 進行访问。在安裝后,配置文件保存在 `/etc/gitea/app.ini` 中。
文件的位置位 `/var/lib/gitea/custom` 目錄中,可以在這裡找到有關自訂的文件明。如果使用主卷(host volumes),很容易訪問這些文件;如果使用命名卷(named volumes),可以過另一容器或直接訪問 `/var/lib/docker/volumes/gitea_gitea/_/var_lib_gitea` 進行訪問。在安裝後,設定文件保存在 `/etc/gitea/app.ini` 中。
## 升
## 升
:::warning
:exclamation::exclamation: **保您已将数据卷迁移到 Docker 容器之外的其他位置** :exclamation::exclamation:
:exclamation::exclamation: **保您已將資料卷遷移到 Docker 容器之外的其他位置** :exclamation::exclamation:
:::
安裝升到最新版本,請按照以下步操作:
安裝升到最新版本,請按照以下步操作:
```bash
# 如果在 docker-compose.yml 中指定了版本,請编辑該文件以更新版本
# 拉取新的
# 如果在 docker-compose.yml 中指定了版本,請編輯該文件以更新版本
# 拉取新的
docker-compose pull
# 启动一个新的容器,自移除的容器
# 啟動一個新的容器,自移除的容器
docker-compose up -d
```
## 从标准镜像升
## 從標準鏡像升
- 份您的设置
- 将卷挂载点从 `/data` 更改為 `/var/lib/gitea`
- 如果使用了自定义`app.ini`,請其移到新的挂载`/etc/gitea` 的卷中
- 卷中的文件gitea)重命名為 custom
- 如果需要,编辑 `app.ini`
- 设置 `START_SSH_SERVER = true`
- 使用` docker.gitea.com/gitea:@dockerVersion@-rootless`
- 份您的設定
- 將卷掛載點從 `/data` 更改為 `/var/lib/gitea`
- 如果使用了自`app.ini`,請其移到新的掛載`/etc/gitea` 的卷中
- 卷中的文件gitea)重命名為 custom
- 如果需要,編輯 `app.ini`
- 設定 `START_SSH_SERVER = true`
- 使用` docker.gitea.com/gitea:@dockerVersion@-rootless`
## 使用环境变量管理部署
## 使用環境變量管理部署
除了上述的环境变量外,`app.ini` 中的任何设置都可以過形式為 `GITEA__SECTION_NAME__KEY_NAME`环境变量進行设置或覆盖。这些设置在每次 Docker 容器启动时都会生效。完整信息請参考[这里](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
除了上述的環境變量外,`app.ini` 中的任何設定都可以過形式為 `GITEA__SECTION_NAME__KEY_NAME`環境變量進行設定或覆蓋。這些設定在每次 Docker 容器啟動時都會生效。完整資訊請參考[這裡](https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini).
这些环境变量可以在 `docker-compose.yml`传递给 Docker 容器。以下示例将启用 SMTP 邮件服务器,如果主机上设置了所需的环境变量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD,或者在 `docker-compose.yml` 相同目錄中的 `.env` 文件中设置了这些环境变量:
這些環境變量可以在 `docker-compose.yml`傳遞給 Docker 容器。以下範例將啟用 SMTP 郵件伺服器,如果主機上設定了所需的環境變量 GITEA**mailer**FROM、GITEA**mailer**HOST、GITEA**mailer**PASSWD,或者在 `docker-compose.yml` 相同目錄中的 `.env` 文件中設定了這些環境變量:
```bash
...
@@ -274,36 +274,36 @@ services:
- GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}"""
```
设置所需的 TOKEN 和 SECRET 值,可以使用 Gitea 的置[生成使用函](../administration/command-line.md#generate).
設定所需的 TOKEN 和 SECRET 值,可以使用 Gitea 的置[生成使用函](../administration/command-line.md#generate).
# SSH 容器透
# SSH 容器透
SSH 在容器内运行,如果需要 SSH 支,需要 SSH 从主机透传到容器。一种選择是在容器内运行 SSH,並使用非标准端口(或将主机端口移到非标准端口)。另一可能更直接的選择是将主机上的 SSH 命令转发到容器。下面解释了这种设置
SSH 在容器內運行,如果需要 SSH 支,需要 SSH 從主機透傳到容器。一種選擇是在容器內運行 SSH,並使用非標準端口(或將主機端口移到非標準端口)。另一可能更直接的選擇是將主機上的 SSH 命令轉發到容器。下面解釋了這種設定
本指南假您已在主上建立了一名為 `git` 的使用者,並具有`docker exec`限,並且 Gitea 容器的名稱為 `gitea`。您需要修改該使用者的 shell,以命令转发到容器`sh` 可執行文件,使用 `docker exec`
本指南假您已在主上建立了一名為 `git` 的使用者,並具有`docker exec`限,並且 Gitea 容器的名稱為 `gitea`。您需要修改該使用者的 shell,以命令轉發到容器`sh` 可執行文件,使用 `docker exec`
首先,在主上建立文件 `/usr/local/bin/gitea-shell`,並填入以下容:
首先,在主上建立文件 `/usr/local/bin/gitea-shell`,並填入以下容:
```bash
#!/bin/sh
/usr/bin/docker exec -i --env SSH_ORIGINAL_COMMAND="$SSH_ORIGINAL_COMMAND" gitea sh "$@"
```
注意上述 docker 命令中的 `gitea` 是容器的名稱。如果您的容器名稱不同,請得更改。
注意上述 docker 命令中的 `gitea` 是容器的名稱。如果您的容器名稱不同,請得更改。
還應保正确设置了 shell 包器的限:
還應保正確設定了 shell 包器的限:
```bash
sudo chmod +x /usr/local/bin/gitea-shell
```
一旦包器就位,您可以将其设置`git` 使用者的 shell
一旦包器就位,您可以將其設定`git` 使用者的 shell
```bash
sudo usermod -s /usr/local/bin/gitea-shell git
```
現在,所有的 SSH 命令都会被转发到容器,您需要在主机上设置 SSH 認證。可以過利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 匹配 Gitea 接受的密。在主`/etc/ssh/sshd_config` 文件中添加以下代码块
現在,所有的 SSH 命令都會被轉發到容器,您需要在主機上設定 SSH 認證。可以過利用 [SSH AuthorizedKeysCommand](../administration/command-line.md#keys) 匹配 Gitea 接受的密。在主`/etc/ssh/sshd_config` 文件中添加以下程式碼塊
```bash
Match User git
@@ -311,9 +311,9 @@ Match User git
AuthorizedKeysCommand /usr/bin/docker exec -i gitea /usr/local/bin/gitea keys -c /etc/gitea/app.ini -e git -u %u -t %t -k %k
```
1.16.0 始,您不需要设置 `-c /etc/gitea/app.ini`。)
1.16.0 始,您不需要設定 `-c /etc/gitea/app.ini`。)
剩下的就是重新启动 SSH 服器:
剩下的就是重新啟動 SSH 服器:
```bash
sudo systemctl restart sshd
@@ -321,5 +321,5 @@ sudo systemctl restart sshd
**注意**
这实际上並有使用 Docker 的 SSH,而是僅僅使用了围绕它的命令。
从理论上讲,您可以不运行内部的 SSH 服器。
這實際上並有使用 Docker 的 SSH,而是僅僅使用了圍繞它的命令。
從理論上講,您可以不運行內部的 SSH 服器。
@@ -8,13 +8,13 @@ aliases:
# 使用 Docker 安裝
Gitea 在其 Docker Hub 組織提供自更新的 Docker 像。可以始使用最新的定標籤或使用其他服务来更新 Docker 像。
Gitea 在其 Docker Hub 組織提供自更新的 Docker 像。可以始使用最新的定標籤或使用其他服務來更新 Docker 像。
参考设置指导使用者完成基 `docker-compose`设置,但是 `docker-compose` 的安裝不在本文檔的范围之内。要安裝 `docker-compose` 本身,請遵循官方[安裝](https://docs.docker.com/compose/install/)。
參考設定指導使用者完成基 `docker-compose`設定,但是 `docker-compose` 的安裝不在本文件的範圍之內。要安裝 `docker-compose` 本身,請遵循官方[安裝](https://docs.docker.com/compose/install/)。
## 基本
單的设置只是建立一卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 像作為服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。建立一个类`gitea` 的目錄,並以下容粘到名為 `docker-compose.yml` 的文件中。請注意,該卷應由配置文件中指定的 UID/GID 的使用者/组拥有。如果您不授予卷正确的权限,容器可能無法启动。另請注意,標籤 `:latest` 安裝前的开发版本。對於定的行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`
單的設定只是建立一卷和一個網路,然後將 `docker.gitea.com/gitea:latest` 像作為服務啟動。由於沒有可用的資料庫,因此可以使用 SQLite3 初始化資料庫。建立一個類`gitea` 的目錄,並以下容粘到名為 `docker-compose.yml` 的文件中。請注意,該卷應由設定文件中指定的 UID/GID 的使用者/組擁有。如果您不授予卷正確的權限,容器可能無法啟動。另請注意,標籤 `:latest` 安裝前的開發版本。對於定的行版,您可以使用 `:1` 或指定某個發行版,例如 `@dockerVersion@`
```yaml
version: "3"
@@ -44,7 +44,7 @@ services:
## 端口
将集成的 openSSH 守進程和 Web 服务器绑定到其他端口,請整端口部分。通常,只需更改主端口,容器的端口保持原即可。
將整合的 openSSH 守進程和 Web 伺服器綁定到其他端口,請調整端口部分。通常,只需更改主端口,容器的端口保持原即可。
```diff
version: "3"
@@ -74,11 +74,11 @@ services:
+ - "2221:22"
```
## 数据库
## 資料庫
### MySQL 数据库
### MySQL 資料庫
Gitea MySQL 数据库结合使用,請将这些更改應用上面建立的 `docker-compose.yml` 文件。
Gitea MySQL 資料庫結合使用,請將這些更改應用上面建立的 `docker-compose.yml` 文件。
```diff
version: "3"
@@ -126,9 +126,9 @@ services:
+ - ./mysql:/var/lib/mysql
```
### PostgreSQL 数据库
### PostgreSQL 資料庫
Gitea PostgreSQL 数据库结合使用,請将这些更改應用上面建立的 `docker-compose.yml` 文件。
Gitea PostgreSQL 資料庫結合使用,請將這些更改應用上面建立的 `docker-compose.yml` 文件。
```diff
version: "3"
@@ -177,7 +177,7 @@ services:
## 命名卷
要使用命名卷而不是主卷,請在 `docker-compose.yml` 配置中定並使用命名卷。此更改将自动建立所需的卷。您無需心命名卷的限;Docker 将自动处理該问题
要使用命名卷而不是主卷,請在 `docker-compose.yml` 設定中定並使用命名卷。此更改將自動建立所需的卷。您無需心命名卷的限;Docker 將自動處理該問題
```diff
version: "3"
@@ -207,59 +207,59 @@ services:
- "222:22"
```
MySQL 或 PostgreSQL 容器需要分建立。
MySQL 或 PostgreSQL 容器需要分建立。
## 启动
## 啟動
要基 `docker-compose` 启动此设置,請執行 `docker-compose up -d`,以在后台启动 Gitea。使用 `docker-compose ps` 将显示 Gitea 是否正确启动。可以使用 `docker-compose logs` 查看日
要基 `docker-compose` 啟動此設定,請執行 `docker-compose up -d`,以在後臺啟動 Gitea。使用 `docker-compose ps` 將顯示 Gitea 是否正確啟動。可以使用 `docker-compose logs` 查看日
关闭设置,請執行 `docker-compose down`这将停止並死容器。些卷仍然存在。
關閉設定,請執行 `docker-compose down`這將停止並死容器。些卷仍然存在。
注意:如果在 http 上使用非 3000 端口,請更改 app.ini 以匹配 `LOCAL_ROOT_URL = http://localhost:3000/`
## 安裝
通過 `docker-compose` 启动 Docker 安裝,應該可以使用喜欢的浏览器访问 Gitea,以完成安裝。访问 http://server-ip:3000 並遵循安裝向导。如果数据库是通過上述 `docker-compose` 设置启动的,請注意,必須 `db` 用作数据库主机名。
通過 `docker-compose` 啟動 Docker 安裝,應該可以使用喜歡的瀏覽器訪問 Gitea,以完成安裝。訪問 http://server-ip:3000 並遵循安裝嚮導。如果資料庫是通過上述 `docker-compose` 設定啟動的,請注意,必須 `db` 用作資料庫主機名。
## 环境变
## 環境變
您可以通過环境变量配置 Gitea 的一些设置
您可以透過環境變量設定 Gitea 的一些設定
默认值以**粗體**示)
預設值以**粗體**示)
- `APP_NAME`**“Gitea: Git with a cup of tea”**:應用程名稱,在页面标题中使用。
- `RUN_MODE`**prod**:應用程序运行模式,影響性能和调试。"dev""prod"或"test"。
- `DOMAIN`**localhost**:此服器的域名,用 Gitea UI 中示的 http 克隆 URL。
- `SSH_DOMAIN`**localhost**:該服器的域名,用 Gitea UI 中示的 ssh 克隆 URL。如果用了安裝面, SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
- `SSH_PORT`**22**:克隆 URL 中示的 SSH 端口。
- `SSH_LISTEN_PORT`**%(SSH_PORT)s**置 SSH 服器的端口。
- `DISABLE_SSH`:**false**:如果不可用,請禁用 SSH 功能。如果要禁用 SSH 功能,在安裝 Gitea 时應将 SSH 端口设置`0`
- `HTTP_PORT`**3000**HTTP 监听端口。
- `ROOT_URL`**""**:覆盖自动生成的公共 URL。如果部 URL 和外部 URL 不匹配(例如在 Docker 中),很有用。
- `LFS_START_SERVER`**false**用 git-lfs 支
- `DB_TYPE`**sqlite3**:正在使用的数据库類型[mysqlpostgresmssqlsqlite3]。
- `DB_HOST`**localhost:3306**数据库主机地址和端口。
- `DB_NAME`**gitea**数据库名稱。
- `DB_USER`**root**数据库使用者名。
- `DB_PASSWD`**"_empty_"** 数据库使用者密碼。如果您在密碼中使用特殊字符,請使用“您的密碼”進行引用。
- `INSTALL_LOCK`**false**:禁止访问安裝面。
- `SECRET_KEY`**""** :全局密钥。这應該更改。如果它具有一值並且 `INSTALL_LOCK` 為空, `INSTALL_LOCK` 将自动设置`true`
- `DISABLE_REGISTRATION`**false**:禁用注册,之只有管理才能為使用者建立帳戶。
- `REQUIRE_SIGNIN_VIEW`**false**用此選项可强制使用者登入以查看任何面。
- `USER_UID`**1000**:在容器内运行 Gitea 的使用者的 UID(Unix 使用者 ID)。如果使用主卷,则将其与 `/data` 卷的所有者的 UID 匹配(對於命名卷,不需要这样做)。
- `USER_GID`**1000**:在容器内运行 Gitea 的使用者的 GIDUnix ID)。如果使用主卷,则将其与 `/data` 卷的所有者的 GID 匹配(對於命名卷,不需要这样做)。
- `APP_NAME`**“Gitea: Git with a cup of tea”**:應用程名稱,在頁面標題中使用。
- `RUN_MODE`**prod**:應用程式運行模式,影響性能和調試。"dev""prod"或"test"。
- `DOMAIN`**localhost**:此服器的域名,用 Gitea UI 中示的 http 克隆 URL。
- `SSH_DOMAIN`**localhost**:該服器的域名,用 Gitea UI 中示的 ssh 克隆 URL。如果用了安裝面, SSH 域伺服器將採用以下形式的 DOMAIN 值(保存時將覆蓋此設定)。
- `SSH_PORT`**22**:克隆 URL 中示的 SSH 端口。
- `SSH_LISTEN_PORT`**%(SSH_PORT)s**置 SSH 服器的端口。
- `DISABLE_SSH`:**false**:如果不可用,請禁用 SSH 功能。如果要禁用 SSH 功能,在安裝 Gitea 時應將 SSH 端口設定`0`
- `HTTP_PORT`**3000**HTTP 監聽端口。
- `ROOT_URL`**""**:覆蓋自動生成的公共 URL。如果部 URL 和外部 URL 不匹配(例如在 Docker 中),很有用。
- `LFS_START_SERVER`**false**用 git-lfs 支
- `DB_TYPE`**sqlite3**:正在使用的資料庫類型[mysqlpostgresmssqlsqlite3]。
- `DB_HOST`**localhost:3306**資料庫主機地址和端口。
- `DB_NAME`**gitea**資料庫名稱。
- `DB_USER`**root**資料庫使用者名
- `DB_PASSWD`**"_empty_"** 資料庫使用者密碼。如果您在密碼中使用特殊字符,請使用“您的密碼”進行引用。
- `INSTALL_LOCK`**false**:禁止訪問安裝面。
- `SECRET_KEY`**""** :全域密鑰。這應該更改。如果它具有一值並且 `INSTALL_LOCK` 為空, `INSTALL_LOCK` 將自動設定`true`
- `DISABLE_REGISTRATION`**false**:禁用註冊,之只有管理才能為使用者建立帳戶。
- `REQUIRE_SIGNIN_VIEW`**false**用此選項可強制使用者登入以查看任何面。
- `USER_UID`**1000**:在容器內運行 Gitea 的使用者的 UID(Unix 使用者 ID)。如果使用主卷,則將其與 `/data` 卷的所有者的 UID 匹配(對於命名卷,不需要這樣做)。
- `USER_GID`**1000**:在容器內運行 Gitea 的使用者的 GIDUnix ID)。如果使用主卷,則將其與 `/data` 卷的所有者的 GID 匹配(對於命名卷,不需要這樣做)。
## 自定义
## 自
[](../administration/customizing-gitea.md)描述的定文件應放在 `/data/gitea` 目錄中。如果使用主卷,则访问这些文件非常容易;對於命名卷,可以過另一容器或通過直接访问 `/var/lib/docker/volumes/gitea_gitea/_data` 完成。安裝后,配置文件保存在 `/data/gitea/conf/app.ini` 中。
[](../administration/customizing-gitea.md)描述的定文件應放在 `/data/gitea` 目錄中。如果使用主卷,則訪問這些文件非常容易;對於命名卷,可以過另一容器或通過直接訪問 `/var/lib/docker/volumes/gitea_gitea/_data` 完成。安裝後,設定文件保存在 `/data/gitea/conf/app.ini` 中。
## 升
## 升
:::warning
:exclamation::exclamation: **保已将数据卷到 Docker 容器外部的某位置** :exclamation::exclamation:
:exclamation::exclamation: **保已將資料捲到 Docker 容器外部的某位置** :exclamation::exclamation:
:::
安裝升到最新版本:
安裝升到最新版本:
```bash
# Edit `docker-compose.yml` to update the version, if you have one specified
@@ -269,9 +269,9 @@ docker-compose pull
docker-compose up -d
```
## 使用环境变量管理部署
## 使用環境變量管理部署
除了上面的环境变量之外,`app.ini` 中的任何设置都可以使用以下形式的环境变量進行设置或覆`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器启动时都会應用这些设置。 完整信息在[这里](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
除了上面的環境變量之外,`app.ini` 中的任何設定都可以使用以下形式的環境變量進行設定或覆`GITEA__SECTION_NAME__KEY_NAME`。 每次 docker 容器啟動時都會應用這些設定。 完整資訊在[這裡](https://github.com/go-gitea/gitea/tree/master/contrib/environment-to-ini)。
```bash
...
@@ -286,9 +286,9 @@ services:
- GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}"""
```
Gitea 為每次新安裝自生成新的 `SECRET_KEY`将它们写`app.ini`。 如果您想手动设置 `SECRET_KEY`,您可以使用以下 docker 命令使用 Gitea 置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安裝請妥善保管您的 `SECRET_KEY`,如若丢失则無法解密已加密的数据
Gitea 為每次新安裝自生成新的 `SECRET_KEY`將它們寫`app.ini`。 如果您想手動設定 `SECRET_KEY`,您可以使用以下 docker 命令使用 Gitea 置的[方法](../administration/command-line.md#generate)生成 `SECRET_KEY`。 安裝請妥善保管您的 `SECRET_KEY`,如若丟失則無法解密已加密的資料
以下命令`stdout` 出一新的 `SECRET_KEY``INTERNAL_TOKEN`,然您可以其放入环境变量中。
以下命令`stdout` 出一新的 `SECRET_KEY``INTERNAL_TOKEN`,然您可以其放入環境變量中。
```bash
docker run -it --rm docker.gitea.com/gitea:1 gitea generate secret SECRET_KEY
@@ -307,9 +307,9 @@ services:
## SSH 容器直通
SSH 在容器内运行,因此,如果需要 SSH 支持,则需要 SSH 从主机传递到容器。一种選择是在非标准端口上行容器 SSH(或将主机端口移至非标准端口)。另一可能更直接的選择是将 SSH 连接从主机转发到容器。下面将说明此设置
SSH 在容器內運行,因此,如果需要 SSH 支援,則需要 SSH 從主機傳遞到容器。一種選擇是在非標準端口上行容器 SSH(或將主機端口移至非標準端口)。另一可能更直接的選擇是將 SSH 連接從主機轉發到容器。下面將說明此設定
本指南假定您已在名為 `git` 的主上建立了一使用者,該使用者容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`些值可以在 `docker-compose.yml`设置為环境变量:
本指南假定您已在名為 `git` 的主上建立了一使用者,該使用者容器值 `USER_UID`/`USER_GID` 共享相同的 `UID`/`GID`些值可以在 `docker-compose.yml`設定為環境變量:
```bash
environment:
@@ -317,26 +317,26 @@ environment:
- USER_GID=1000
```
接下来将主机`/home/git/.ssh` 入容器。否SSH 身份驗證無法在容器内运行。
接下來將主機`/home/git/.ssh` 入容器。否SSH 身份驗證無法在容器內運行。
```bash
volumes:
- /home/git/.ssh/:/data/git/.ssh
```
現在,需要在主上建立 SSH 密钥对。該密钥对将用于向主驗證主上的 `git` 使用者。
現在,需要在主上建立 SSH 密鑰對。該密鑰對將用於向主驗證主上的 `git` 使用者。
```bash
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
```
在下一步中,需要在主上建立一名為 `/usr/local/bin/gitea` 的文件(具有可執行限)。該文件将发出从主机到容器的 SSH 转发。将以下容添加到 `/usr/local/bin/gitea`
在下一步中,需要在主上建立一名為 `/usr/local/bin/gitea` 的文件(具有可執行限)。該文件將發出從主機到容器的 SSH 轉發。將以下容添加到 `/usr/local/bin/gitea`
```bash
ssh -p 2222 -o StrictHostKeyChecking=no [email protected] "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
```
為了使转发正常工作,需要容器(22)的 SSH 端口映射到 `docker-compose.yml` 中的主端口 2222。由此端口不需要暴露外界,因此可以其映射到主`localhost`
為了使轉發正常工作,需要容器(22)的 SSH 端口映射到 `docker-compose.yml` 中的主端口 2222。由此端口不需要暴露外界,因此可以其映射到主`localhost`
```bash
ports:
@@ -344,9 +344,9 @@ ports:
- "127.0.0.1:2222:22"
```
另外,主上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以 Gitea 容器`authorized_keys` 相同的方式進行操作。因此,您在上面建立的密(“Gitea 主机密钥”)的公共密添加到 `/home/git/.ssh/authorized_keys`可以`echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:`git` 使用者的公需要“按原”添加,而通過 Gitea 网络界面添加的所有其他公钥将`command="/app [...]` 作為前
另外,主上的 `/home/git/.ssh/authorized_keys` 需要修改。它需要以 Gitea 容器`authorized_keys` 相同的方式進行操作。因此,您在上面建立的密(“Gitea 主機密鑰”)的公共密添加到 `/home/git/.ssh/authorized_keys`可以`echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys` 完成。重要提示:`git` 使用者的公需要“按原”添加,而通過 Gitea 網路介面添加的所有其他公鑰將`command="/app [...]` 作為前
該文件應該看起像:
該文件應該看起像:
```bash
# SSH pubkey from git user
@@ -356,19 +356,19 @@ ssh-rsa <Gitea Host Key>
command="/usr/local/bin/gitea --config=/data/gitea/conf/app.ini serv key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <user pubkey>
```
这是详细的说明,当发出 SSH 請求时会发生什
這是詳細的說明,當發出 SSH 請求時會發生什
1. 使用 `git` 使用者向主机发出 SSH 請求,例如 `git clone git@domain:user/repo.git`
2.`/home/git/.ssh/authorized_keys` 中,該命令執行 `/usr/local/bin/gitea` 本。
3. `/usr/local/bin/gitea` SSH 請求转发到端口 2222,該端口已映射到容器的 SSH 端口(22)。
4. `/home/git/.ssh/authorized_keys` 中存在 `git` 使用者的公,因此身份驗證主 → 容器成功,並且 SSH 請求转发到在 docker 容器中行的 Gitea。
1. 使用 `git` 使用者向主機發出 SSH 請求,例如 `git clone git@domain:user/repo.git`
2.`/home/git/.ssh/authorized_keys` 中,該命令執行 `/usr/local/bin/gitea` 本。
3. `/usr/local/bin/gitea` SSH 請求轉發到端口 2222,該端口已映射到容器的 SSH 端口(22)。
4. `/home/git/.ssh/authorized_keys` 中存在 `git` 使用者的公,因此身份驗證主 → 容器成功,並且 SSH 請求轉發到在 docker 容器中行的 Gitea。
如果在 Gitea Web 面中添加了新的 SSH 密,它将以与現有密相同的方式附加到 `.ssh/authorized_keys` 中。
如果在 Gitea Web 面中添加了新的 SSH 密,它將以與現有密相同的方式附加到 `.ssh/authorized_keys` 中。
**注意**
SSH 容器直通僅在以下情下有效
SSH 容器直通僅在以下情下有效
- 在容器中使用 `opensshd`
- 如果未 `AuthorizedKeysCommand` `SSH_CREATE_AUTHORIZED_KEYS_FILE = false` 合使用以禁用授文件密生成
- `LOCAL_ROOT_URL`
- 如果未 `AuthorizedKeysCommand` `SSH_CREATE_AUTHORIZED_KEYS_FILE = false` 合使用以禁用授文件密生成
- `LOCAL_ROOT_URL`
@@ -6,111 +6,111 @@ sidebar_position: 20
# Act Runner
页面将详细介绍[Act Runner](https://gitea.com/gitea/act_runner)是Gitea Actions的Runner。
頁面將詳細介紹[Act Runner](https://gitea.com/gitea/act_runner)是Gitea Actions的Runner。
## 要求
在Docker容器中行Job,因此您需要首先安裝Docker。
保Docker守進程正在行。
在Docker容器中行Job,因此您需要首先安裝Docker。
保Docker守進程正在行。
其他Docker API容的OCI容器引擎也應該可以正常工作,但尚未经過测试
其他Docker API容的OCI容器引擎也應該可以正常工作,但尚未經過測試
但是,如果您定要直接在主机上运行Job不需要Docker。
但是,如果您定要直接在主機上運行Job不需要Docker。
## 安裝
有多安裝Act Runner的方法。
有多安裝Act Runner的方法。
### 下二進制文件
### 下二進制文件
您可以[發佈](https://gitea.com/gitea/act_runner/releases)下二進制文件。
然而,如果您想使用最新的夜间构建版本,可以[载页](https://dl.gitea.com/act_runner/)下
您可以[發佈](https://gitea.com/gitea/act_runner/releases)下二進制文件。
然而,如果您想使用最新的夜間構建版本,可以[載頁](https://dl.gitea.com/act_runner/)下
二進制文件,請保您已经下载了适用于您的平台的正版本。
您可以通過运行以下命令進行查:
二進制文件,請保您已經下載了適用於您的平台的正版本。
您可以透過運行以下命令進行查:
```bash
chmod +x act_runner
./act_runner --version
```
如果看到版本信息,则表示您已经下载了正的二進制文件。
如果看到版本資訊,則表示您已經下載了正的二進制文件。
### 使用 Docker
### 使用 Docker
您可以使用[docker hub](https://hub.docker.com/r/gitea/act_runner/tags)上的Docker像。
二進制文件似,您可以使用`nightly`標籤使用最新的夜间构建版本,而`latest`標籤是最新的定版本。
您可以使用[docker hub](https://hub.docker.com/r/gitea/act_runner/tags)上的Docker像。
二進制文件似,您可以使用`nightly`標籤使用最新的夜間構建版本,而`latest`標籤是最新的定版本。
```bash
docker pull docker.io/gitea/act_runner:latest # for the latest stable release
docker pull docker.io/gitea/act_runner:nightly # for the latest nightly build
```
## 配置
## 設定
配置通過配置文件進行。它是可選的,当没有指定配置文件时,将使用默认配置
設定通過設定文件進行。它是可選的,當沒有指定設定文件時,將使用預設設定
您可以通過运行以下命令生成配置文件:
您可以透過運行以下命令生成設定文件:
```bash
./act_runner generate-config
```
默认配置是安全的,可以直接使用。
預設設定是安全的,可以直接使用。
```bash
./act_runner generate-config > config.yaml
./act_runner --config config.yaml [command]
```
您亦可以如下使用 docker 建立配置文件:
您亦可以如下使用 docker 建立設定文件:
```bash
docker run --entrypoint="" --rm -it docker.io/gitea/act_runner:latest act_runner generate-config > config.yaml
```
使用Docker镜像时,可以使用`CONFIG_FILE`环境变量指定配置文件。确保将文件作為卷挂载到容器中:
使用Docker鏡像時,可以使用`CONFIG_FILE`環境變量指定設定文件。確保將文件作為卷掛載到容器中:
```bash
docker run -v $(pwd)/config.yaml:/config.yaml -e CONFIG_FILE=/config.yaml ...
```
您可能注意到上面的命令都是不完整的,因為現在還不是行Act Runner的候。
行Act Runner之前,我需要首先将其注册到您的Gitea例中。
您可能注意到上面的命令都是不完整的,因為現在還不是行Act Runner的候。
行Act Runner之前,我需要首先將其註冊到您的Gitea例中。
## 注册
## 註冊
行Act Runner之前,需要進行注册,因為Runner需要知道从哪里获取Job,並且對於Gitea实例来说,识别Runner也很重要。
行Act Runner之前,需要進行註冊,因為Runner需要知道從哪裡獲取Job,並且對於Gitea實例來說,識別Runner也很重要。
### Runner级别
### Runner級別
您可以在不同级别上注册Runner,它可以是:
您可以在不同級別上註冊Runner,它可以是:
- 实例级别Runner将為实例中的所有存儲库运行Job。
- 組織级别Runner為組織中的所有存儲库运行Job。
- 存儲库级别Runner為其所属的存儲库运行Job。
- 實例級別Runner將為實例中的所有儲存庫運行Job。
- 組織級別Runner為組織中的所有儲存庫運行Job。
- 儲存庫級別Runner為其所屬的儲存庫運行Job。
請注意,即使存儲库具有自己的存儲库级别Runner,它仍然可以使用实例级别或組織级别Runner。未的版本可能提供更多此進行更好控制的選
請注意,即使儲存庫具有自己的儲存庫級別Runner,它仍然可以使用實例級別或組織級別Runner。未的版本可能提供更多此進行更好控制的選
### 获取注册令牌
### 獲取註冊令牌
Runner级别决定了从哪里获取注册令牌。
Runner級別決定了從哪裡獲取註冊令牌。
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
- 存儲库级别:存儲库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 實例級別:管理員設定頁面,例如 `<your_gitea.com>/admin/actions/runners`
- 組織級別:組織設定頁面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
- 儲存庫級別:儲存庫設定頁面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
如果您無法看到设置页面,請保您具有正确的权限並且已用 Actions。
如果您無法看到設定頁面,請保您具有正確的權限並且已用 Actions。
注册令牌的格式是一个随机字符串 `D0gvfu2iHfUjNqCYVljVyRV14fISpJxxxxxxxxxx`
註冊令牌的格式是一個隨機字符串 `D0gvfu2iHfUjNqCYVljVyRV14fISpJxxxxxxxxxx`
注册令牌也可以過 Gitea 的 [命令行](../../administration/command-line.md#actions-generate-runner-token) 得:
註冊令牌也可以過 Gitea 的 [命令行](/administration/command-line#actions-generate-runner-token) 得:
```
gitea --config /etc/gitea/app.ini actions generate-runner-token
```
使用者也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 环境变量以在 Gitea 启动时设置全局的注册令牌,例如:
使用者也可以使用 `GITEA_RUNNER_REGISTRATION_TOKEN``GITEA_RUNNER_REGISTRATION_TOKEN_FILE` 環境變量以在 Gitea 啟動時設定全域的註冊令牌,例如:
```
openssl rand -hex 24 > /some-dir/runner-token
@@ -118,48 +118,48 @@ export GITEA_RUNNER_REGISTRATION_TOKEN_FILE=/some-dir/runner-token
./gitea --config ...
```
来自环境变量的令牌在通過 Web 面或 API 重置(重新建立新令牌)前一直有效。
來自環境變量的令牌在通過 Web 面或 API 重置(重新建立新令牌)前一直有效。
令牌可用于注册多个 Runner,直到使用 Web 面中的令牌重置链接将其撤並替為新令牌。
令牌可用於註冊多個 Runner,直到使用 Web 面中的令牌重置鏈接將其撤並替為新令牌。
### 注册Runner
### 註冊Runner
可以通過运行以下命令来注册Act Runner
可以透過運行以下命令來註冊Act Runner
```bash
./act_runner register
```
或者,您可以使用 `--config`项来指定前面部分提到的配置文件。
或者,您可以使用 `--config`項來指定前面部分提到的設定文件。
```bash
./act_runner --config config.yaml register
```
逐步输入注册信息,包括:
逐步輸入註冊資訊,包括:
- Gitea 例的 URL,例如 `https://gitea.com/``http://192.168.8.8:3000/`
- 注册令牌。
- Runner名稱(可選)。如果留空,使用主名。
- Runner標籤(可選)。如果留空,使用默认標籤。
- Gitea 例的 URL,例如 `https://gitea.com/``http://192.168.8.8:3000/`
- 註冊令牌。
- Runner名稱(可選)。如果留空,使用主名。
- Runner標籤(可選)。如果留空,使用預設標籤。
您可能Runner標籤感到困惑,稍后将对其進行解
您可能Runner標籤感到困惑,稍後將對其進行解
如果您想以非交互方式注册Runner,可以使用參數執行以下操作。
如果您想以非交互方式註冊Runner,可以使用參數執行以下操作。
```bash
./act_runner register --no-interactive --instance <instance_url> --token <registration_token> --name <runner_name> --labels <runner_labels>
```
注册Runner,您可以在前目錄中找到一名為 `.runner` 的新文件。該文件存儲注册信息
請不要手动编辑該文件。
如果此文件失或损坏,可以直接除它並重新注册
註冊Runner,您可以在前目錄中找到一名為 `.runner` 的新文件。該文件儲存註冊資訊
請不要手動編輯該文件。
如果此文件失或損壞,可以直接除它並重新註冊
如果您想将注册信息存儲在其他位置,請在配置文件中指定,並不要忘指定 `--config`
如果您想將註冊資訊儲存在其他位置,請在設定文件中指定,並不要忘指定 `--config`
### 使用Docker注册Runner
### 使用Docker註冊Runner
如果您使用的是Docker像,注册行為略有不同。在这种情况下,注册和运行合為一步,因此您需要在行Act Runner指定注册信息
如果您使用的是Docker像,註冊行為略有不同。在這種情況下,註冊和運行合為一步,因此您需要在行Act Runner指定註冊資訊
```bash
docker run \
@@ -175,12 +175,12 @@ docker run \
-d gitea/act_runner:nightly
```
您可能注意到我们已将`/var/run/docker.sock`挂载到容器中。
是因為Act Runner在Docker容器中行Job,因此它需要Docker守進程進行通信。
如前所述,如果要在主上直接行Job,可以其移除。
需要明的是,这里的 "主" 实际上指的是当前运行 Act Runner的容器,而不是主机机器本身。
您可能注意到我們已將`/var/run/docker.sock`掛載到容器中。
是因為Act Runner在Docker容器中行Job,因此它需要Docker守進程進行通信。
如前所述,如果要在主上直接行Job,可以其移除。
需要明的是,這裡的 "主" 實際上指的是當前運行 Act Runner的容器,而不是主機機器本身。
### 使用 Docker compose 行 Runner
### 使用 Docker compose 行 Runner
您亦可使用如下的 `docker-compose.yml`:
@@ -201,31 +201,31 @@ services:
- /var/run/docker.sock:/var/run/docker.sock
```
### 您使用 Docker 镜像启动 Runner,如何配置 Cache
### 您使用 Docker 鏡像啟動 Runner,如何設定 Cache
如果你不打算在工作流中使用 `actions/cache`,你可以忽略本段。
如果您在使用 `actions/cache` 时没有進行外的配置,将会返回以下错误信息
如果您在使用 `actions/cache` 時沒有進行外的設定,將會返回以下錯誤資訊
> Failed to restore: getCacheEntry failed: connect ETIMEDOUT IP:PORT
这个错误的原因是 runner 容器和作容器位不同的网络中,因此作容器無法访问 runner 容器。
因此,配置 cache 作以保其正常行是非常重要的。請按照以下步操作:
這個錯誤的原因是 runner 容器和作容器位不同的網路中,因此作容器無法訪問 runner 容器。
因此,設定 cache 作以保其正常行是非常重要的。請按照以下步操作:
- 1.取 Runner 容器所在主的 LAN(本地局域 IP 地址。
- 2.取一 Runner 容器所在主的空端口
- 3.在配置文件中如下配置
- 1.取 Runner 容器所在主的 LAN(本地局域 IP 地址。
- 2.取一 Runner 容器所在主的空端口
- 3.在設定文件中如下設定
```yaml
cache:
enabled: true
dir: ""
# 使用步 1. 取的 LAN IP
# 使用步 1. 取的 LAN IP
host: "192.168.8.17"
# 使用步 2. 取的端口
# 使用步 2. 取的端口
port: 8088
```
- 4.启动容器, Cache 端口映射至主
- 4.啟動容器, Cache 端口映射至主
```bash
docker run \
@@ -236,25 +236,25 @@ docker run \
### 標籤
Runner的標籤用于确定Runner可以行哪些Job以及如何行它
Runner的標籤用於確定Runner可以行哪些Job以及如何行它
默认標籤為`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
是逗分隔的列表,每个项目都是一標籤。
預設標籤為`ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster`
是逗分隔的列表,每個專案都是一標籤。
让我们`ubuntu-22.04:docker://node:16-bullseye` 為例。
它意味Runner可以运行带`runs-on: ubuntu-22.04`的Job,並且該Job在使用`node:16-bullseye`像的Docker容器中行。
讓我們`ubuntu-22.04:docker://node:16-bullseye` 為例。
它意味Runner可以運行帶`runs-on: ubuntu-22.04`的Job,並且該Job在使用`node:16-bullseye`像的Docker容器中行。
如果默认镜像無法足您的需求,並且您有足的硬碟空可以使用更好、更大的像,您可以其更改為`ubuntu-22.04:docker://<您喜欢的镜像>`
您可以在[act ](https://github.com/nektos/act/blob/master/IMAGES.md)上找到更多有用的像。
如果預設鏡像無法滿足您的需求,並且您有足的硬碟空可以使用更好、更大的像,您可以其更改為`ubuntu-22.04:docker://<您喜歡的鏡像>`
您可以在[act ](https://github.com/nektos/act/blob/master/IMAGES.md)上找到更多有用的像。
如果您想直接在主机上运行Job,您可以其更改為`ubuntu-22.04:host`或僅`ubuntu-22.04``:host`是可選的。
然而,我们建议您使用`linux_amd64:host``windows:host`的特殊名稱,以避免用。
如果您想直接在主機上運行Job,您可以其更改為`ubuntu-22.04:host`或僅`ubuntu-22.04``:host`是可選的。
然而,我們建議您使用`linux_amd64:host``windows:host`的特殊名稱,以避免用。
Gitea 1.21 始,您可以過修改 runner 的配置文件中的 `container.labels` 更改標籤(如果没有配置文件,請考 [配置教程](#配置)),過執行 `./act_runner daemon --config config.yaml` 命令重 runner 之后,这些新定的標籤就生效。
Gitea 1.21 始,您可以過修改 runner 的設定文件中的 `container.labels` 更改標籤(如果沒有設定文件,請考 [設定教學](#設定)),過執行 `./act_runner daemon --config config.yaml` 命令重 runner 之後,這些新定的標籤就生效。
##
##
注册完Runner,您可以通過运行以下命令来运行它:
註冊完Runner,您可以透過運行以下命令來運行它:
```bash
./act_runner daemon
@@ -262,6 +262,6 @@ Runner的標籤用于确定Runner可以运行哪些Job以及如何运行它们
./act_runner daemon --config config.yaml
```
Runner将从Gitea实例获取Job並自动运行它
Runner將從Gitea實例獲取Job並自動運行它
Act Runner仍处于开发中,建定期查最新版本並進行升
Act Runner仍處於開發中,建定期查最新版本並進行升
@@ -4,122 +4,122 @@ slug: "comparison"
sidebar_position: 15
---
# GitHub Actions的
# GitHub Actions的
管Gitea Actions旨在GitHub Actions容,但它们之间存在一些差
管Gitea Actions旨在GitHub Actions容,但它們之間存在一些差
## 外功能
## 外功能
### Action URL绝对路径
### Action URL絕對路徑
Gitea Actions支通過URL绝对路径定义actions意味您可以使用自任何Git存儲库的Actions。
Gitea Actions支通過URL絕對路徑定義actions意味您可以使用自任何Git儲存庫的Actions。
例如,`uses: https://github.com/actions/checkout@v4``uses: http://your_gitea.com/owner/repo@branch`
### 使用Go编写Actions
### 使用Go編寫Actions
Gitea Actions支使用Go编写Actions。
参阅[建立Go Actions](https://blog.gitea.com/creating-go-actions/)。
Gitea Actions支使用Go編寫Actions。
參閱[建立Go Actions](https://blog.gitea.com/creating-go-actions/)。
### 支持非标准的调度语法 @yearly, @monthly, @weekly, @daily, @hourly
### 支援非標準的調度語法 @yearly, @monthly, @weekly, @daily, @hourly
Github Actions 不支持这些语法,详见 https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
Github Actions 不支援這些語法,詳見 https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
## 不支的工作流
## 不支的工作流
### `concurrency`
是用一次行一Job。
参阅[使用並](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
是用一次行一Job。
參閱[使用並](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### `run-name`
是工作流生成的工作流行的名稱。
参阅[GitHub Actions 的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
是工作流生成的工作流行的名稱。
參閱[GitHub Actions 的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### `permissions`和`jobs.<job_id>.permissions`
参阅[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
參閱[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### `jobs.<job_id>.timeout-minutes`
参阅[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
參閱[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### `jobs.<job_id>.continue-on-error`
参阅[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
參閱[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### `jobs.<job_id>.environment`
参阅[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
參閱[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。
Gitea Actions 目前不支此功能。
Gitea Actions 目前不支此功能。
### 复杂的`runs-on`
### 複雜的`runs-on`
参阅[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
參閱[GitHub Actions的工作流](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
Gitea Actions目前只支`runs-on: xyz``runs-on: [xyz]`
Gitea Actions目前只支`runs-on: xyz``runs-on: [xyz]`
### `hashFiles`表
### `hashFiles`表
参阅[](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
參閱[](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。
Gitea Actions目前不支此功能,如果使用它,结果将始终為空字符串。
Gitea Actions目前不支此功能,如果使用它,結果將始終為空字符串。
作為解方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
作為解方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。
## 缺失的功能
### 问题匹配器
### 問題匹配器
问题匹配器是一掃描Actions出以查找指定正则表达式模式並在使用者面中突出示該信息的方法。
参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
問題匹配器是一掃描Actions出以查找指定正則表達式模式並在使用者面中突出示該資訊的方法。
參閱[問題匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### 為错误建立注释
### 為錯誤建立註釋
参阅[错误建立注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
參閱[錯誤建立註釋](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。
Gitea Actions目前不支此功能。
Gitea Actions目前不支此功能。
### 表
### 表
對於 [](https://docs.github.com/en/actions/learn-github-actions/expressions), 前僅 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支
對於 [](https://docs.github.com/en/actions/learn-github-actions/expressions), 前僅 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支
## 缺失的UI功能
### 预处理和后处理步
### 預處理和後處理步
预处理和后处理步在Job日使用者面中有自己的使用者面。
預處理和後處理步在Job日使用者面中有自己的使用者面。
### 服务步骤
### 服務步驟
务步骤在Job日使用者面中有自己的使用者面。
務步驟在Job日使用者面中有自己的使用者面。
## 不一的行為
## 不一的行為
### 下Actions
### 下Actions
`[actions].DEFAULT_ACTIONS_URL` 保持默认值為 `github` Gitea将会从 https://github.com 下载相对路径的actions。比如:
如果你使用 `uses: actions/checkout@v4`Gitea将会从 https://github.com/actions/checkout.git 下载这个 actions 项目
如果你想要另外一 Git服务下载actions,你只需要使用绝对URL `uses: https://gitea.com/actions/checkout@v4` 来下载
`[actions].DEFAULT_ACTIONS_URL` 保持預設值為 `github` Gitea將會從 https://github.com 下載相對路徑的actions。比如:
如果你使用 `uses: actions/checkout@v4`Gitea將會從 https://github.com/actions/checkout.git 下載這個 actions 專案
如果你想要另外一 Git服務下載actions,你只需要使用絕對URL `uses: https://gitea.com/actions/checkout@v4` 來下載
如果你的 Gitea 例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改為 `[actions].DEFAULT_ACTIONS_URL = self`这样所有的相对路径的actions引用,不再会从 github.com 去下,而会从这个 Gitea 例自己的存放庫中去下。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下 actions。
如果你的 Gitea 例是部署在一個互聯網限制的網路中,也可以使用絕對地址來下載 actions。你也可以將設定項修改為 `[actions].DEFAULT_ACTIONS_URL = self`這樣所有的相對路徑的actions引用,不再會從 github.com 去下,而會從這個 Gitea 例自己的存放庫中去下。例如: `uses: actions/checkout@v4` 將會從 `[server].ROOT_URL`/actions/checkout.git 這個地址去下 actions。
设置`[actions].DEFAULT_ACTIONS_URL`進行配置。請参阅[配置备忘單](../../administration/config-cheat-sheet.md#actions-actions)。
設定`[actions].DEFAULT_ACTIONS_URL`進行設定。請參閱[設定備忘單](../../administration/config-cheat-sheet.md#actions-actions)。
### 上下文可用性
查上下文可用性,因此您可以在更多地方使用env上下文。
参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。
查上下文可用性,因此您可以在更多地方使用env上下文。
參閱[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。
@@ -4,121 +4,121 @@ slug: "design"
sidebar_position: 40
---
# Gitea Actions设计
# Gitea Actions設計
Gitea Actions由多个组件组成。本文檔将对它们進行逐描述。
Gitea Actions由多個元件組成。本文件將對它們進行逐描述。
## Act
[nektos/act](https://github.com/nektos/act) 项目是一个优秀的工具,允你在本地行GitHub Actions。
受到了它的启发,並思考它是否可能為Gitea行Actions。
[nektos/act](https://github.com/nektos/act) 專案是一個優秀的工具,允你在本地行GitHub Actions。
受到了它的啟發,並思考它是否可能為Gitea行Actions。
然而,管[nektos/act](https://github.com/nektos/act)被设计為一命令行工具,但我们实际上需要的是一个专為Gitea修改的Go
因此,我在[gitea/act](https://gitea.com/gitea/act)基上進行了分叉。
然而,管[nektos/act](https://github.com/nektos/act)被設計為一命令行工具,但我們實際上需要的是一個專為Gitea修改的Go
因此,我在[gitea/act](https://gitea.com/gitea/act)基上進行了分叉。
是一个软分叉,定期跟進上游。
然添加了一些自定义提交,但我们会尽力避免原始代码進行太多更改。
是一個軟分叉,定期跟進上游。
然添加了一些自提交,但我們會盡力避免原始程式碼進行太多更改。
分叉的 act 只是Gitea特定用途的接或配器。
還添加了一些外的提交,例如:
分叉的 act 只是Gitea特定用途的接或配器。
還添加了一些外的提交,例如:
- 執行日志输出到日志记录器钩子,以便报告给Gitea
- 禁用 GraphQL URL,因為Gitea不支
-Job启动一个新的容器,而不是重使用,以保隔性。
- 執行日誌輸出到日誌記錄器鉤子,以便報告給Gitea
- 禁用 GraphQL URL,因為Gitea不支
-Job啟動一個新的容器,而不是重使用,以保隔性。
些修改有理由合到上游。
如果使用者只想在本地行可信的Actions,它们是没有意的。
些修改有理由合到上游。
如果使用者只想在本地行可信的Actions,它們是沒有意的。
然而,将来可能出現重,例如两个项目都需要的必要错误修复或新功能。
些情下,我们将向上存放庫贡献变更。
然而,將來可能出現重,例如兩個專案都需要的必要錯誤修復或新功能。
些情下,我們將向上存放庫貢獻變更。
## act runner
Gitea的Runner被稱為act runner,因為它基act。
Gitea的Runner被稱為act runner,因為它基act。
其他CIRunner一,我们将其设计為Gitea的外部部分,意味它應該在Gitea不同的服器上行。
其他CIRunner一,我們將其設計為Gitea的外部部分,意味它應該在Gitea不同的服器上行。
為了保Runner接到正的Gitea例,我需要使用令牌注册它。
此外,Runner通過明自己的標籤向Gitea告它可以行的Job類型。
為了保Runner接到正的Gitea例,我需要使用令牌註冊它。
此外,Runner通過明自己的標籤向Gitea告它可以行的Job類型。
之前,我提到工作流文件中的 `runs-on: ubuntu-latest` 表示該Job在具有`ubuntu-latest`標籤的Runner上行。
但是,Runner如何知道要`ubuntu-latest`?答案在于将標籤映射到境。
就是為什么在注册過程中添加自定义標籤,需要入一些复杂内容,比如`my_custom_label:docker://centos:7`
意味Runner可以接受需要在`my_custom_label`行的Job,並通過使用`centos:7`像的Docker容器来运行它。
之前,我提到工作流文件中的 `runs-on: ubuntu-latest` 表示該Job在具有`ubuntu-latest`標籤的Runner上行。
但是,Runner如何知道要`ubuntu-latest`?答案在於將標籤映射到境。
就是為什麼在註冊過程中添加自標籤,需要入一些複雜內容,比如`my_custom_label:docker://centos:7`
意味Runner可以接受需要在`my_custom_label`行的Job,並通過使用`centos:7`像的Docker容器來運行它。
然而,Docker不是唯一的選
act 也支直接在主机上运行Job。
是通過像`linux_arm:host`这样的標籤現的。
这个標籤表示Runner可以接受需要在`linux_arm`行的Job,並直接在主机上运行它
然而,Docker不是唯一的選
act 也支直接在主機上運行Job。
是通過像`linux_arm:host`這樣的標籤現的。
這個標籤表示Runner可以接受需要在`linux_arm`行的Job,並直接在主機上運行它
標籤的设计遵循格式`label[:schema[:args]]`
如果省略了schema则默认`host`
標籤的設計遵循格式`label[:schema[:args]]`
如果省略了schema則預設`host`
因此,
- `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带`my_custom_label`標籤的Job。
- `my_custom_label:host`:在主上直接运行带`my_custom_label`標籤的Job。
- `my_custom_label`:等同`my_custom_label:host`
- `my_custom_label:vm:ubuntu-latest`:(僅為例,未現)使用`ubuntu-latest` ISO的虚拟机运行带`my_custom_label`標籤的Job。
- `my_custom_label:docker://node:18`:使用`node:18 Docker`鏡像運行帶`my_custom_label`標籤的Job。
- `my_custom_label:host`:在主上直接運行帶`my_custom_label`標籤的Job。
- `my_custom_label`:等同`my_custom_label:host`
- `my_custom_label:vm:ubuntu-latest`:(僅為例,未現)使用`ubuntu-latest` ISO的虛擬機運行帶`my_custom_label`標籤的Job。
## 通信协议
## 通信協議
act runner是Gitea的立部分,我需要一种协议让RunnerGitea例進行通信。
然而,我们不认為让Gitea监听一个新端口是好主意。
相反,我希望重用HTTP端口,意味着我们需要一个与HTTP容的协议
因此,我们選择使用基HTTP的gRPC。
act runner是Gitea的立部分,我需要一種協議讓RunnerGitea例進行通信。
然而,我們不認為讓Gitea監聽一個新端口是好主意。
相反,我希望重用HTTP端口,意味著我們需要一個與HTTP容的協議
因此,我們選擇使用基HTTP的gRPC。
使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 進行接。
gRPC 的更多信息,請访问[其官方](https://grpc.io/)。
使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 進行接。
gRPC 的更多資訊,請前往[其官方](https://grpc.io/)。
## 网络架构
## 網路架構
让我们来看一下整體的网络架构
这将帮助您解一些问题,並解為什使用回环地址注册Runner是不好的主意。
讓我們來看一下整體的網路架構
這將幫助您解一些問題,並解為什使用迴環地址註冊Runner是不好的主意。
![network](/images/usage/actions/network.png)
片中标记了四个网络连接,並且箭的方向表示建立接的方向。
片中標記了四個網路連接,並且箭的方向表示建立接的方向。
### 接 1act runner到Gitea
### 接 1act runner到Gitea
act runner 必須能够连接到Gitea以接收任务並发送執行果回
act runner 必須能夠連接到Gitea以接收任務並發送執行果回
### 接 2Job容器到Gitea
### 接 2Job容器到Gitea
即使Job容器位同一台机器上,它们的网络命名空间与Runner不同。
举个例子,如果工作流中包含 `actions/checkout@v4`Job容器需要接到Gitea来获取代码
获取代码並不总是运行某些Job所必需的,但在大多数情况下是必需的。
即使Job容器位同一臺機器上,它們的網路命名空間與Runner不同。
舉個例子,如果工作流中包含 `actions/checkout@v4`Job容器需要接到Gitea來獲取程式碼
獲取程式碼並不總是運行某些Job所必需的,但在大多數情況下是必需的。
如果您使用回环地址注册RunnerRunnerGitea在同一台机器上Runner可以接到Gitea。
然而,如果Job容器尝试从本地主机获取代码,它将失败,因為Gitea不在同一容器中。
如果您使用迴環地址註冊RunnerRunnerGitea在同一臺機器上Runner可以接到Gitea。
然而,如果Job容器嘗試從本地主機獲取程式碼,它將失敗,因為Gitea不在同一容器中。
### 接 3act runner到互联网
### 接 3act runner到互聯網
您使用`actions/checkout@v4` 的一些Actionsact runner下的是本,而不是Job容器。
默认情况下,它[github.com](http://github.com/)下,因此需要访问互联网。如果您设置的是 self
么默认将从您的前Gitea例下,那此步不需要接到互联网
它還默认从Docker Hub下一些Docker像,也需要互联网访问
您使用`actions/checkout@v4` 的一些Actionsact runner下的是本,而不是Job容器。
預設情況下,它[github.com](http://github.com/)下,因此需要訪問互聯網。如果您設定的是 self
麼預設將從您的前Gitea例下,那此步不需要接到互聯網
它還預設從Docker Hub下一些Docker像,也需要互聯網訪問
然而,互联网访问並不是绝对必需的。
您可以配置您的Gitea实例从您的内部网络设施中取 Actions 或像。
然而,互聯網訪問並不是絕對必需的。
您可以設定您的Gitea實例從您的內部網路設施中取 Actions 或像。
实际上,您的Gitea例可以同时充当 Actions 市场和镜像註冊表。
您可以GitHub上的Actions存放庫像到您的Gitea例,並其用作普通Actions。
而 [Gitea 容器註冊表](usage/packages/container.md) 可用作Docker像註冊表。
實際上,您的Gitea例可以同時充當 Actions 市場和鏡像註冊表。
您可以GitHub上的Actions存放庫像到您的Gitea例,並其用作普通Actions。
而 [Gitea 容器註冊表](usage/packages/container.md) 可用作Docker像註冊表。
### 接 4Job容器到互联网
### 接 4Job容器到互聯網
使用`actions/setup-go@v5`的Actions,可能需要从互联网下载资源,以设置Job容器中的Go语言环境。
因此,成功完成些Actions需要访问互联网
使用`actions/setup-go@v5`的Actions,可能需要從互聯網下載資源,以設定Job容器中的Go語言環境。
因此,成功完成些Actions需要訪問互聯網
然而,也是可選的。
您可以使用自定义的Actions避免依赖互联网访问,或者可以使用已安裝所有依赖项的打包的Docker镜像来运行Job。
然而,也是可選的。
您可以使用自的Actions避免依賴互聯網訪問,或者可以使用已安裝所有依賴項的打包的Docker鏡像來運行Job。
## 总结
## 總結
使用Gitea Actions只需要保Runner能够连接到Gitea例。
联网访问是可選的,但如果有互联网访问,将需要外的工作。
换句话说:当Runner能自行查询互联网时,它的工作效果最好,但您不需要其暴露给互联网(無是單向還是向)。
使用Gitea Actions只需要保Runner能夠連接到Gitea例。
聯網訪問是可選的,但如果有互聯網訪問,將需要外的工作。
換句話說:當Runner能自行查詢互聯網時,它的工作效果最好,但您不需要其暴露給互聯網(無是單向還是向)。
如果您在使用Gitea Actions遇到任何网络问题,希望上面的片能够帮助您進行故障排除。
如果您在使用Gitea Actions遇到任何網路問題,希望上面的片能夠幫助您進行故障排除。
@@ -4,84 +4,84 @@ slug: "faq"
sidebar_position: 100
---
# Gitea Actions常见问题解答
# Gitea Actions常見問題解答
面包含一些关于Gitea Actions的常见问题和答案。
面包含一些關於Gitea Actions的常見問題和答案。
## 是否可以在我的例中默认禁用新存放庫的Actions
## 是否可以在我的例中預設禁用新存放庫的Actions
是的,您為实例启用Actions,您可以選择默认启用actions單元以适用于所有新存放庫。
是的,您為實例啟用Actions,您可以選擇預設啟用actions單元以適用於所有新存放庫。
```ini
[repository]
; 去掉 repo.actions 将不会為新存放庫自动启用actions
; 去掉 repo.actions 將不會為新存放庫自動啟用actions
DEFAULT_REPO_UNITS = ...,repo.actions
```
## 在工作流文件中應該使用`${{ github.xyz }}`還是`${{ gitea.xyz }}`
您可以使用`github.xyz`Gitea正常工作。
如前所述,Gitea Actions的设计是与GitHub Actions容的。
然而,我们建议在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出現不同類型的密(因為您在Gitea上使用此工作流,而不是GitHub)。
不過,完全是可選的,因為目前这两个選项的效果是相同的。
您可以使用`github.xyz`Gitea正常工作。
如前所述,Gitea Actions的設計是與GitHub Actions容的。
然而,我們建議在工作流文件中使用`gitea.xyz`,以防止在工作流文件中出現不同類型的密(因為您在Gitea上使用此工作流,而不是GitHub)。
不過,完全是可選的,因為目前這兩個選項的效果是相同的。
## 使用`actions/checkout@v4`等ActionsJob容器会从何处下载脚本?
## 使用`actions/checkout@v4`等ActionsJob容器會從何處下載腳本?
GitHub 上有成千上万个 [Actions ](https://github.com/marketplace?type=actions)。
当您编写 `uses: actions/checkout@v4` ,它默认会从 [github.com/actions/checkout](https://github.com/actions/checkout) 下载脚本。
那如果您想使用一些管在其它平台上的本呢,比如在 gitea.com 上的?
GitHub 上有成千上萬個 [Actions ](https://github.com/marketplace?type=actions)。
當您編寫 `uses: actions/checkout@v4` ,它預設會從 [github.com/actions/checkout](https://github.com/actions/checkout) 下載腳本。
那如果您想使用一些管在其它平台上的本呢,比如在 gitea.com 上的?
好消息是,您可以指定要任何位置使用Actions的URL前
是Gitea Actions中的额外语法。
好消息是,您可以指定要任何位置使用Actions的URL前
是Gitea Actions中的額外語法。
例如:
- `uses: https://gitea.com/xxx/xxx@xxx`
- `uses: https://github.com/xxx/xxx@xxx`
- `uses: http://your_gitea_instance.com/xxx@xxx`
注意,`https://``http://`是必需的!
注意,`https://``http://`是必需的!
这是与 GitHub Actions 的一个区别GitHub Actions 只允使用管在 GitHub 上的 actions 本。
但使用者理應拥有权利去灵活决定如何行 Actions。
這是與 GitHub Actions 的一個區別GitHub Actions 只允使用管在 GitHub 上的 actions 本。
但使用者理應擁有權利去靈活決定如何行 Actions。
另外,如果您希望您的 Runner 默认从您自己的 Gitea 例下 Actions,可以通過设置 `[actions].DEFAULT_ACTIONS_URL`進行配置
参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
另外,如果您希望您的 Runner 預設從您自己的 Gitea 例下 Actions,可以透過設定 `[actions].DEFAULT_ACTIONS_URL`進行設定
參見[設定速查表](../../administration/config-cheat-sheet.md#actions-actions)。
## 如何限制Runner的限?
## 如何限制Runner的限?
Runner僅具有接到您的Gitea例的限。
任何Runner接收到要行的Job,它将临时获得与Job关联的存放庫的有限限。
如果您想為Runner提供更多限,允许它访问更多私有存放庫或外部系,您可以向其传递[](usage/actions/secrets.md)。
Runner僅具有接到您的Gitea例的限。
任何Runner接收到要行的Job,它將臨時獲得與Job關聯的存放庫的有限限。
如果您想為Runner提供更多限,允許它訪問更多私有存放庫或外部系,您可以向其傳遞[](usage/actions/secrets.md)。
對於 Actions 的粒度限控制是一项复杂的工作。
在未,我们将添加更多選以使Gitea更可配置,例如允许对存放庫進行更多写访问或对同一組織中的所有存放庫進行读访问
對於 Actions 的粒度限控制是一項複雜的工作。
在未,我們將添加更多選以使Gitea更可設定,例如允許對存放庫進行更多寫訪問或對同一組織中的所有存放庫進行讀訪問
## 如何避免被黑客攻擊?
两种可能的攻擊類型:未知的Runner取您的存放庫中的代码或密,或恶意脚本控制您的Runner。
兩種可能的攻擊類型:未知的Runner取您的存放庫中的程式碼或密,或惡意腳本控制您的Runner。
避免前者意味不允您不认识的人為您的存放庫、組織或实例注册Runner。
避免前者意味不允您不認識的人為您的存放庫、組織或實例註冊Runner。
者要复杂一些。
如果您為公司使用私有的Gitea例,您可能不需要心安全问题,因為您信任您的同事,並且可以追究他们的责任。
者要複雜一些。
如果您為公司使用私有的Gitea例,您可能不需要心安全問題,因為您信任您的同事,並且可以追究他們的責任。
對於公共例,情略有不同。
以下是我在 [gitea.com](http://gitea.com/)上的做法:
對於公共例,情略有不同。
以下是我在 [gitea.com](http://gitea.com/)上的做法:
- 我僅為 "gitea" 組織注册Runner,因此我的Runner不執行自其他存放庫的Job。
- 我的Runner始在隔容器中行Job。然可以直接在主上進行这样的操作,但出安全考,我们選择不这样做。
- 對於 fork 的拉取請求,需要得批准才能行Actions。参见[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)為其存放庫或組織注册自己的Runner,我们不会反对,只是不在我的組織中使用它。然而,他應該注意保該Runner不被他们不认识的其他使用者使用。
- 我僅為 "gitea" 組織註冊Runner,因此我的Runner不執行自其他存放庫的Job。
- 我的Runner始在隔容器中行Job。然可以直接在主上進行這樣的操作,但出安全考,我們選擇不這樣做。
- 對於 fork 的拉取請求,需要得批准才能行Actions。參見[#22803](https://github.com/go-gitea/gitea/pull/22803)。
- 如果有人在[gitea.com](http://gitea.com/)為其存放庫或組織註冊自己的Runner,我們不會反對,只是不在我的組織中使用它。然而,他應該注意保該Runner不被他們不認識的其他使用者使用。
## act runner支哪些操作系
## act runner支哪些操作系
它在Linux、macOS和Windows上行良好。
然理上支其他操作系,但需要進一步测试
它在Linux、macOS和Windows上行良好。
然理上支其他操作系,但需要進一步測試
需要注意的一是,如果選直接在主机上运行Job而不是在Job容器中行,操作系统之间的环境差可能会导致意外的失
需要注意的一是,如果選直接在主機上運行Job而不是在Job容器中行,操作系統之間的環境差可能會導致意外的失
例如,在大多数情况下,Windows上有可用的bash,而act尝试默认使用bash运行脚本。
因此,您需要在工作流文件中将默认shell指定為`powershell`考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
例如,在大多數情況下,Windows上有可用的bash,而act嘗試預設使用bash運行腳本。
因此,您需要在工作流文件中將預設shell指定為`powershell`考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。
```yaml
defaults:
@@ -89,72 +89,72 @@ defaults:
shell: powershell
```
## 為什么選择GitHub Actions?為什不選择与GitLab CI/CD容的工具?
## 為什麼選擇GitHub Actions?為什不選擇與GitLab CI/CD容的工具?
[@lunny](https://gitea.com/lunny)在現Actions的[问题](https://github.com/go-gitea/gitea/issues/13539)中已经解释過这个问题
此外,Actions不僅是一CI/CD 系,還是一个自动化工具。
[@lunny](https://gitea.com/lunny)在現Actions的[問題](https://github.com/go-gitea/gitea/issues/13539)中已經解釋過這個問題
此外,Actions不僅是一CI/CD 系,還是一個自動化工具。
源世界中,已经有许多[上的Actions](https://github.com/marketplace?type=actions)現了。
重用它是令人兴奋的。
源世界中,已經有許多[上的Actions](https://github.com/marketplace?type=actions)現了。
重用它是令人興奮的。
## 如果它在多標籤上行,例如 `runs-on: [label_a, label_b]`会发生什
## 如果它在多標籤上行,例如 `runs-on: [label_a, label_b]`會發生什
是有效的法。
它意味它應該在具有`label_a` **和** `label_b`標籤的Runner上行,考[GitHub Actions的工作流](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是,act runner 並不支持这种方式。
如上所述,我们将標籤映射到境:
是有效的法。
它意味它應該在具有`label_a` **和** `label_b`標籤的Runner上行,考[GitHub Actions的工作流](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。
不幸的是,act runner 並不支援這種方式。
如上所述,我們將標籤映射到境:
- `ubuntu``ubuntu:22.04`
- `centos``centos:8`
但我需要標籤映射到境,例如:
但我需要標籤映射到境,例如:
- `[ubuntu]``ubuntu:22.04`
- `[with-gpu]``linux:with-gpu`
- `[ubuntu, with-gpu]``ubuntu:22.04_with-gpu`
還需要重新设计任务分配Runner的方式。
還需要重新設計任務分配Runner的方式。
具有`ubuntu``centos``with-gpu`的Runner並不一定表示它可以接受`[centos, with-gpu]`的Job。
因此,Runner應該通知Gitea例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
不是一个技术问题,只是在早期设计中被忽了。
参见[runtime.go#L65](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。
因此,Runner應該通知Gitea例它只能接受具有 `[ubuntu]``[centos]``[with-gpu]``[ubuntu, with-gpu]`的Job。
不是一個技術問題,只是在早期設計中被忽了。
參見[runtime.go#L65](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。
目前,act runner尝试匹配標籤中的每一,並使用找到的第一匹配
目前,act runner嘗試匹配標籤中的每一,並使用找到的第一匹配
## 代理標籤和自定义標籤對於Runner有什么区别
## 代理標籤和自標籤對於Runner有什麼區別
![labels](/images/usage/actions/labels.png)
代理標籤是由Runner在注册過程中向Gitea实例报告的。
而自定义標籤是由Gitea的管理或組織或存放庫的所有者手添加的(取决于Runner所属的级别)。
代理標籤是由Runner在註冊過程中向Gitea實例報告的。
而自標籤是由Gitea的管理或組織或存放庫的所有者手添加的(取決於Runner所屬的級別)。
然而,目前方面的设计還有待改進,因為它目前存在一些不完善之
您可以向已注册的Runner添加自定义標籤,比如 `centos`意味該Runner接收具有`runs-on: centos`的Job。
然而,Runner可能不知道要使用哪个环境来執行該標籤,致它使用默认镜像或导致逻辑死胡同
这个默认值可能使用者的期望不符。
参见[runtime.go#L71](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。
然而,目前方面的設計還有待改進,因為它目前存在一些不完善之
您可以向已註冊的Runner添加自標籤,比如 `centos`意味該Runner接收具有`runs-on: centos`的Job。
然而,Runner可能不知道要使用哪個環境來執行該標籤,致它使用預設鏡像或導致邏輯死衚衕
這個預設值可能使用者的期望不符。
參見[runtime.go#L71](https://gitea.com/gitea/act_runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。
此同,如果您想更改Runner的標籤,我们建议您重新注册Runner。
此同,如果您想更改Runner的標籤,我們建議您重新註冊Runner。
## Gitea Actions runner有更多的实現吗
## Gitea Actions runner有更多的實現嗎
然我希望提供更多的選,但由于我们有限的人力源,act runner是唯一受支的官方Runner。
然而,無您如何定,Gitea 和act runner都是完全源的,所以任何人都可以建立一新的/更好的現。
们支持您的選,無您如何定。
如果您選分支act runner建立自己的版本,請在您為您的更改其他人也有助的情况下贡献这些更改。
然我希望提供更多的選,但由於我們有限的人力源,act runner是唯一受支的官方Runner。
然而,無您如何定,Gitea 和act runner都是完全源的,所以任何人都可以建立一新的/更好的現。
們支援您的選,無您如何定。
如果您選分支act runner建立自己的版本,請在您為您的更改其他人也有助的情況下貢獻這些更改。
## Gitea 支哪些工作流触发事件?
## Gitea 支哪些工作流觸發事件?
表格中列出的所有事件都是支的,並且 GitHub 容。
對於僅 GitHub 支的事件,請参阅 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
表格中列出的所有事件都是支的,並且 GitHub 容。
對於僅 GitHub 支的事件,請參閱 GitHub 的[](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)。
| 触发事件 | 活類型 |
| 觸發事件 | 活類型 |
|-----------------------------|--------------------------------------------------------------------------------------------------------------------------|
| create | 不用 |
| delete | 不用 |
| fork | 不用 |
| gollum | 不用 |
| push | 不用 |
| create | 不用 |
| delete | 不用 |
| fork | 不用 |
| gollum | 不用 |
| push | 不用 |
| issues | `opened`, `edited`, `closed`, `reopened`, `assigned`, `unassigned`, `milestoned`, `demilestoned`, `labeled`, `unlabeled` |
| issue_comment | `created`, `edited`, `deleted` |
| pull_request | `opened`, `edited`, `closed`, `reopened`, `assigned`, `unassigned`, `synchronize`, `labeled`, `unlabeled` |
@@ -163,5 +163,5 @@ defaults:
| release | `published`, `edited` |
| registry_package | `published` |
> 對於 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref``refs/pull/:prNumber/merge`,它指向这个拉取請求合提交的一个预览。但是 Gitea 没有这种 reference。
> 因此,Gitea Actions 中 `ref``refs/pull/:prNumber/head`,它指向这个拉取請求的分支而不是合提交的预览
> 對於 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref``refs/pull/:prNumber/merge`,它指向這個拉取請求合提交的一個預覽。但是 Gitea 沒有這種 reference。
> 因此,Gitea Actions 中 `ref``refs/pull/:prNumber/head`,它指向這個拉取請求的分支而不是合提交的預覽
@@ -6,37 +6,37 @@ sidebar_position: 1
# Overview
Gitea **1.19**版本始,Gitea Actions成為了置的CI/CD解方案。
Gitea **1.19**版本始,Gitea Actions成為了置的CI/CD解方案。
## 名稱
Gitea Actions[GitHub Actions](https://github.com/features/actions)相似且容,它的名稱也受到了它的启发
為了避免混淆,在这里我们明确了拼方式:
Gitea Actions[GitHub Actions](https://github.com/features/actions)相似且容,它的名稱也受到了它的啟發
為了避免混淆,在這裡我們明確了拼方式:
- "Gitea Actions"两个單詞都大写且带有"s")是Gitea功能的名稱。
- "Gitea Actions"兩個單詞都大寫且帶有"s")是Gitea功能的名稱。
- "GitHub Actions"是GitHub功能的名稱。
- "Actions"根上下文的不同可以指代以上任意一。在本文中指代的是"Gitea Actions"。
- "action"或"actions"指代一些要使用的本/插件,比如"actions/checkout@v4"或"actions/cache@v3"。
- "Actions"根上下文的不同可以指代以上任意一。在本文中指代的是"Gitea Actions"。
- "action"或"actions"指代一些要使用的本/外掛,比如"actions/checkout@v4"或"actions/cache@v3"。
## Runner
和其他CI/CD解方案一Gitea不自己行Job,而是Job委托给Runner。
Gitea Actions的Runner被稱為[act runner](https://gitea.com/gitea/act_runner),它是一个独立的程,也是用Go语言编写的。
它是基[nektos/act](http://github.com/nektos/act)的一[分支](https://gitea.com/gitea/act) 。
和其他CI/CD解方案一Gitea不自己行Job,而是Job委託給Runner。
Gitea Actions的Runner被稱為[act runner](https://gitea.com/gitea/act_runner),它是一個獨立的程,也是用Go語言編寫的。
它是基[nektos/act](http://github.com/nektos/act)的一[分支](https://gitea.com/gitea/act) 。
Runner是立部署的,可能存在在的安全问题
為了避免这些问题,請遵循两个简單的規則:
Runner是立部署的,可能存在在的安全問題
為了避免這些問題,請遵循兩個簡單的規則:
- 不要為你的存放庫、組織或例使用你不信任的Runner。
- 不要為你不信任的存放庫、組織或例提供Runner。
- 不要為你的存放庫、組織或例使用你不信任的Runner。
- 不要為你不信任的存放庫、組織或例提供Runner。
對於部使用的Gitea例,比如企业或个人使用的例,这两个規則不是问题,它自然而然就是如此。
然而,對於公共的Gitea例,比如[gitea.com](https://gitea.com),在添加或使用Runner时應当牢记这两个規則。
對於部使用的Gitea例,比如企業或個人使用的例,這兩個規則不是問題,它自然而然就是如此。
然而,對於公共的Gitea例,比如[gitea.com](https://gitea.com),在添加或使用Runner時應當牢記這兩個規則。
## 状态
## 狀態
Gitea Actions仍然在开发中,因此可能存在一些错误和缺失的功能。
並且在定版本(v1.20或更高版本)之前可能進行一些重大的更改。
Gitea Actions仍然在開發中,因此可能存在一些錯誤和缺失的功能。
並且在定版本(v1.20或更高版本)之前可能進行一些重大的更改。
如果情况发生变化,我们将在此進行更新。
因此,請在其他地方找到過文章时参考此处的内容。
如果情況發生變化,我們將在此進行更新。
因此,請在其他地方找到過文章時參考此處的內容。
@@ -4,91 +4,91 @@ slug: "quickstart"
sidebar_position: 10
---
# 快速入
# 快速入
页面将指导您使用Gitea Actions的過程。
頁面將指導您使用Gitea Actions的過程。
## 设置Gitea
## 設定Gitea
首先,您需要一Gitea例。
您可以按照[](installation/from-package.md) 来设置一个新实例或升現有例。
您如何安裝或行Gitea,只要版本是1.19.0或更高即可。
首先,您需要一Gitea例。
您可以按照[](installation/from-package.md) 來設定一個新實例或升現有例。
您如何安裝或行Gitea,只要版本是1.19.0或更高即可。
1.21.0始,默认情况下,Actions是用的。如果您正在使用1.21.0之前的版本,您需要以下容添加到配置文件中以用它:
1.21.0始,預設情況下,Actions是用的。如果您正在使用1.21.0之前的版本,您需要以下容添加到設定文件中以用它:
```ini
[actions]
ENABLED=true
```
如果您想了解更多信息或在配置過程中遇到任何问题,請考[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。
如果您想了解更多資訊或在設定過程中遇到任何問題,請考[設定速查表](../../administration/config-cheat-sheet.md#actions-actions)。
### 设置Runner
### 設定Runner
Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 来运行Job。
為了避免消耗過多源並影響Gitea例,建您在Gitea例分开的机器上启动Runner。
Gitea Actions需要[act runner](https://gitea.com/gitea/act_runner) 來運行Job。
為了避免消耗過多源並影響Gitea例,建您在Gitea例分開的機器上啟動Runner。
您可以使用[预构建的二進制文件](http://dl.gitea.com/act_runner)或[容器](https://hub.docker.com/r/gitea/act_runner/tags)来设置Runner。
您可以使用[預構建的二進制文件](http://dl.gitea.com/act_runner)或[容器](https://hub.docker.com/r/gitea/act_runner/tags)來設定Runner。
在進一步操作之前,建您先使用预构建的二進制文件以命令行方式行它,以保它您的环境兼容,尤其是如果您在本地主机上运行Runner。
如果出現问题,这样调试起来会更容易。
在進一步操作之前,建您先使用預構建的二進制文件以命令行方式行它,以保它您的環境相容,尤其是如果您在本地主機上運行Runner。
如果出現問題,這樣調試起來會更容易。
該Runner可以在隔的Docker容器中行Job,因此您需要保已安裝Docker並且Docker守進程正在行。
虽然这不是格必需的,因為Runner也可以直接在主机上运行Job这取决于您的配置方式。
然而,建使用Docker行Job,因為它更安全且更易管理。
該Runner可以在隔的Docker容器中行Job,因此您需要保已安裝Docker並且Docker守進程正在行。
雖然這不是格必需的,因為Runner也可以直接在主機上運行Job這取決於您的設定方式。
然而,建使用Docker行Job,因為它更安全且更易管理。
行Runner之前,您需要使用以下命令将其注册到Gitea例中:
行Runner之前,您需要使用以下命令將其註冊到Gitea例中:
```bash
./act_runner register --no-interactive --instance <instance> --token <token>
```
需要两个必需的參數:`instance``token`
需要兩個必需的參數:`instance``token`
`instance`是您的Gitea例的地址,如`http://192.168.8.8:3000``https://gitea.com`
Runner和Job容器(由Runner启动以執行Job将连接到此地址。
意味它可能与用于Web访问`ROOT_URL`不同。
使用回环地址(例如 `127.0.0.1``localhost`)是一不好的選
如果不定使用哪地址,通常選局域地址即可。
`instance`是您的Gitea例的地址,如`http://192.168.8.8:3000``https://gitea.com`
Runner和Job容器(由Runner啟動以執行Job將連接到此地址。
意味它可能與用於Web訪問`ROOT_URL`不同。
使用迴環地址(例如 `127.0.0.1``localhost`)是一不好的選
如果不定使用哪地址,通常選局域地址即可。
`token`身份驗證和标识,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,並且不能用于注册多个Runner。
您可以以下位置取不同级别`token`,而建立出相應级别`runner`
`token`身份驗證和標識,例如 `P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23`
它只能使用一次,並且不能用於註冊多個Runner。
您可以以下位置取不同級別`token`,而建立出相應級別`runner`
- 实例级别:管理员设置页面,例如 `<your_gitea.com>/admin/actions/runners`
- 組織级别:組織设置页面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
- 存儲库级别:存儲库设置页面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
- 實例級別:管理員設定頁面,例如 `<your_gitea.com>/admin/actions/runners`
- 組織級別:組織設定頁面,例如 `<your_gitea.com>/<org>/settings/actions/runners`
- 儲存庫級別:儲存庫設定頁面,例如 `<your_gitea.com>/<owner>/<repo>/settings/actions/runners`
![register runner](/images/usage/actions/register-runner.png)
注册后,当前目錄中出現一名為 `.runner` 的新文件,該文件存儲了注册信息
請不要手动编辑該文件。
如果該文件失或损坏,只需除它然重新注册即可。
註冊後,當前目錄中出現一名為 `.runner` 的新文件,該文件儲存了註冊資訊
請不要手動編輯該文件。
如果該文件失或損壞,只需除它然重新註冊即可。
,是时候启动Runner了:
,是時候啟動Runner了:
```bash
./act_runner daemon
```
您可以在管理面上看到新的Runner
您可以在管理面上看到新的Runner
![view runner](/images/usage/actions/view-runner.png)
您可以通過访问[act runner](usage/actions/act-runner.md) 取更多信息
您可以透過訪問[act runner](usage/actions/act-runner.md) 取更多資訊
### 使用Actions
即使對於用了Gitea例的Actions存儲库仍默认禁用Actions。
即使對於用了Gitea例的Actions儲存庫仍預設禁用Actions。
用它,請转到存儲库的设置页面,例如`your_gitea.com/<owner>/repo/settings`,然后启`Enable Repository Actions`
用它,請轉到儲存庫的設定頁面,例如`your_gitea.com/<owner>/repo/settings`,然後啟`Enable Repository Actions`
![enable actions](/images/usage/actions/enable-actions.png)
接下的步可能相当复杂
您需要学习Actions的[工作流](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions),並编写您想要的工作流文件。
接下的步可能相當複雜
您需要學習Actions的[工作流](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions),並編寫您想要的工作流文件。
不過,我可以从一个简單的演示始:
不過,我可以從一個簡單的演示始:
```yaml
name: Gitea Actions Demo
@@ -112,20 +112,20 @@ jobs:
- run: echo "🍏 This job's status is ${{ job.status }}."
```
您可以上述例上為一`.yaml`展名的文件,放在存儲库`.gitea/workflows/`目錄中,例如`.gitea/workflows/demo.yaml`
您可能注意到,这与[GitHub Actions的快速入](https://docs.github.com/en/actions/quickstart)非常相似。
是因為Gitea Actions在可能容GitHub Actions的基上進行设计
您可以上述例上為一`.yaml`展名的文件,放在儲存庫`.gitea/workflows/`目錄中,例如`.gitea/workflows/demo.yaml`
您可能注意到,這與[GitHub Actions的快速入](https://docs.github.com/en/actions/quickstart)非常相似。
是因為Gitea Actions在可能容GitHub Actions的基上進行設計
請注意,演示文件中包含一些表情符
保您的数据库支持它们,特是在使用MySQL
如果字符集不是`utf8mb4`出現错误,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
更多信息,請参阅[数据库准备工作](../../installation/database-preparation.md#mysqlmariadb)。
請注意,演示文件中包含一些表情符
保您的資料庫支援它們,特是在使用MySQL
如果字符集不是`utf8mb4`出現錯誤,例如`Error 1366 (HY000): Incorrect string value: '\\xF0\\x9F\\x8E\\x89 T...' for column 'name' at row 1`
更多資訊,請參閱[資料庫準備工作](../../installation/database-preparation.md#mysqlmariadb)。
或者,您可以演示文件中除所有表情符,然后再尝试一次。
或者,您可以演示文件中除所有表情符,然後再嘗試一次。
`on: [push]` 一行表示您向該存儲库推送提交,工作流将被触发
然而,您上 YAML 文件,它也推送一提交,所以您應該在"Actions"標籤中看到一新的任
`on: [push]` 一行表示您向該儲存庫推送提交,工作流將被觸發
然而,您上 YAML 文件,它也推送一提交,所以您應該在"Actions"標籤中看到一新的任
![view job](/images/usage/actions/view-job.png)
做得好!您已成功始使用Actions。
做得好!您已成功始使用Actions。
@@ -4,25 +4,25 @@ slug: "secrets"
sidebar_position: 50
---
# 密管理
# 密管理
管理允您在使用者、組織或存放庫中存儲敏感信息
管理在 Gitea 1.19+ 版本中可用。
管理允您在使用者、組織或存放庫中儲存敏感資訊
管理在 Gitea 1.19+ 版本中可用。
## 设置密钥名稱
## 設定密鑰名稱
以下規則适用于密钥名稱:
以下規則適用於密鑰名稱:
- 密名稱只能包含字母字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允使用空格。
- 密名稱只能包含字母字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下劃線 (`_`)。不允使用空格。
- 密名稱不能以 `GITHUB_``GITEA_`開頭。
- 密名稱不能以 `GITHUB_``GITEA_`開頭。
- 密名稱不能以字開頭。
- 密名稱不能以字開頭。
- 密名稱不分大小
- 密名稱不分大小
- 密名稱在建立它们的级别上必須是唯一的。
- 密名稱在建立它們的級別上必須是唯一的。
例如,對於在存放庫级别建立的密,它在該存放庫中必須具有唯一的名稱;對於在組織级别建立的密,它在該级别上必須具有唯一的名稱。
例如,對於在存放庫級別建立的密,它在該存放庫中必須具有唯一的名稱;對於在組織級別建立的密,它在該級別上必須具有唯一的名稱。
如果在多个级别上存在具有相同名稱的密钥,则最低级别的密钥优先生效。例如,如果組織级别的密钥与存放庫级别的密具有相同的名稱,存放庫级别的密钥将优先生效。
如果在多個級別上存在具有相同名稱的密鑰,則最低級別的密鑰優先生效。例如,如果組織級別的密鑰與存放庫級別的密具有相同的名稱,存放庫級別的密鑰將優先生效。
@@ -4,27 +4,27 @@ slug: "actions-variables"
sidebar_position: 25
---
#
#
您可以建立使用者、組織和存放庫级别的变量。量的级别取决于建立它的位置。建立变量时,变量的名稱
转换為大,在yaml文件中引用需要使用大
您可以建立使用者、組織和存放庫級別的變量。量的級別取決於建立它的位置。建立變量時,變量的名稱
轉換為大,在yaml文件中引用需要使用大
## 命名規則
以下規則适用于变量名:
以下規則適用於變量名:
- 量名稱只能包含字母字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下划线 (`_`)。不允使用空格。
- 量名稱不能以 `GITHUB_``GITEA_`開頭。
- 量名稱不能以字開頭。
- 量名稱不分大小
- 量名稱在建立它们的级别上必須是唯一的。
- 量名稱不能為 `CI`
- 量名稱只能包含字母字字符 (`[a-z]`, `[A-Z]`, `[0-9]`) 或下劃線 (`_`)。不允使用空格。
- 量名稱不能以 `GITHUB_``GITEA_`開頭。
- 量名稱不能以字開頭。
- 量名稱不分大小
- 量名稱在建立它們的級別上必須是唯一的。
- 量名稱不能為 `CI`
## 使用
建立配置变量后,它们将自动填充到 `vars` 上下文中。您可以在工作流中使用`${{ vars.VARIABLE_NAME }}` 这样的表达式来使用它
建立設定變量後,它們將自動填充到 `vars` 上下文中。您可以在工作流中使用`${{ vars.VARIABLE_NAME }}` 這樣的表達式來使用它
## 优先级
## 優先級
如果同名量存在于多个级别,则级别最低的变量优先。
存放庫级别的变量总是比組織或者使用者级别的变量优先被選中。
如果同名量存在於多個級別,則級別最低的變量優先。
存放庫級別的變量總是比組織或者使用者級別的變量優先被選中。
@@ -8,37 +8,37 @@ aliases:
# AGit
在 Gitea `1.13` 版本中,添加了 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支。AGit 允使用者在有存放庫写入权限的情下直接建立拉取請求,也不需要分叉存放庫。有助于减少重存放庫的量,降低不必要的硬碟使用量。
在 Gitea `1.13` 版本中,添加了 [AGit](https://git-repo.info/zh/2020/03/agit-flow-and-git-repo/) 的支。AGit 允使用者在有存放庫寫入權限的情下直接建立拉取請求,也不需要分叉存放庫。有助於減少重存放庫的量,降低不必要的硬碟使用量。
:::note
器端需要 Git 版本 2.29 或更高版本才能正常行。
服器端需要 Git 版本 2.29 或更高版本才能正常行。
:::
## 使用 AGit 建立 PR
AGit 允在推送代码到远程存放庫建立 PR(合請求)。
通過在推送使用特定的 refspec(git 中已知的位置标识符),可以实現这一功能。
下面的示例说明了这一点
AGit 允在推送程式碼到遠程存放庫建立 PR(合請求)。
通過在推送使用特定的 refspec(git 中已知的位置標識符),可以實現這一功能。
下面的範例說明了這一點
```shell
git push origin HEAD:refs/for/main
```
該命令的结构如下:
該命令的結構如下:
- `HEAD`:目分支
- `refs/<for|draft|for-review>/<branch>`:目 PR 類型
- `for`:建立一`<branch>` 為目分支的普通 PR
- `draft`/`for-review`:目前被默忽略
- `<branch>/<session>`:要打 PR 的目分支
- `-o <topic|title|description>`PR 的選
- `title`PR 的标题
- `topic`PR 應該打的分支名稱
- `HEAD`:目分支
- `refs/<for|draft|for-review>/<branch>`:目 PR 類型
- `for`:建立一`<branch>` 為目分支的普通 PR
- `draft`/`for-review`:目前被默忽略
- `<branch>/<session>`:要打 PR 的目分支
- `-o <topic|title|description>`PR 的選
- `title`PR 的標題
- `topic`PR 應該打的分支名稱
- `description`PR 的描述
- `force-push=true`: 是否制更新目分支
- 注意: 如果不值,只用 `-o force-push` 也同可以正常工作。
- `force-push=true`: 是否制更新目分支
- 注意: 如果不值,只用 `-o force-push` 也同可以正常工作。
下面是另一个高级示例,用建立一`topic``title``description` 為參數的新 PR,目分支是 `main`
下面是另一個高級範例,用建立一`topic``title``description` 為參數的新 PR,目分支是 `main`
```shell
git push origin HEAD:refs/for/main -o topic="Topic of my PR" -o title="Title of the PR" -o description="# The PR Description\nThis can be **any** markdown content.\n- [x] Ok"
@@ -7,12 +7,12 @@ aliases:
- /zh-tw/clone-filters
---
# 克隆過器 (部分克隆)
# 克隆過器 (部分克隆)
Git 引入了 `--filter`项用于 `git clone` 命令,該選可以過掉大文件和象(如 blob),而建立一存放庫的部分克隆。克隆過器對於大型存放庫和/或按流量计费的连接特有用,因為完全克隆(不使用 `--filter`)可能很昂(需要下所有历史数据)。
Git 引入了 `--filter`項用於 `git clone` 命令,該選可以過掉大文件和象(如 blob),而建立一存放庫的部分克隆。克隆過器對於大型存放庫和/或按流量計費的連接特有用,因為完全克隆(不使用 `--filter`)可能很昂(需要下所有歷史資料)。
需要 Git 2.22 或更高版本,無是在 Gitea 服器上還是在客端上都需要如此。為了使克隆過器正常工作,請保客端上的 Git 版本至少与服务器上的版本相同(或更高)。以管理身份登入到 Gitea,然后转到管理后台 -> 應用配置,查看服器的 Git 版本。
需要 Git 2.22 或更高版本,無是在 Gitea 服器上還是在客端上都需要如此。為了使克隆過器正常工作,請保客端上的 Git 版本至少與伺服器上的版本相同(或更高)。以管理身份登入到 Gitea,然後轉到管理後臺 -> 應用設定,查看服器的 Git 版本。
默认情况下,克隆過器是用的,除非在 `[git]` `DISABLE_PARTIAL_CLONE` 设置`true`
預設情況下,克隆過器是用的,除非在 `[git]` `DISABLE_PARTIAL_CLONE` 設定`true`
参阅 [GitHub 博客文章:解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以取克隆過器的常用法(無 Blob 和無的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以取更高的用法(例如按文件大小過和取消過滤以将部分克隆转换為完全克隆)。
參閱 [GitHub 部落格文章:解部分克隆](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/) 以取克隆過器的常用法(無 Blob 和無的克隆),以及 [GitLab 部分克隆文](https://docs.gitlab.com/ee/topics/git/partial_clone.html) 以取更高的用法(例如按文件大小過和取消過濾以將部分克隆轉換為完全克隆)。
@@ -7,32 +7,32 @@ aliases:
- /zh-tw/incoming-email
---
# 件接收
# 件接收
Gitea 支通過接收件執行多操作。本面描述如何進行设置
Gitea 支通過接收件執行多操作。本面描述如何進行設定
## 要求
理接收的电子邮件需要用 IMAP 功能的电子邮件帳戶。
的策略是使用 [电子邮件子地址](https://en.wikipedia.org/wiki/Email_address#Sub-addressing),但也可以使用 catch-all 箱。
接收电子邮件地址中包含一使用者/操作特定的令牌,告 Gitea 應執行哪操作。
此令牌應該出現在 `To``Delivered-To` 头字段中。
理接收的電子郵件需要用 IMAP 功能的電子郵件帳戶。
的策略是使用 [電子郵件子地址](https://en.wikipedia.org/wiki/Email_address#Sub-addressing),但也可以使用 catch-all 箱。
接收電子電子郵件地址中包含一使用者/操作特定的令牌,告 Gitea 應執行哪操作。
此令牌應該出現在 `To``Delivered-To` 頭欄位中。
Gitea 会尝试检测自动回复並跳過它们,电子邮件服务器也應該配置以减少接收到的干(垃圾件、通讯订阅等)。
Gitea 會嘗試檢測自動回覆並跳過它們,電子郵件伺服器也應該設定以減少接收到的干(垃圾件、通訊訂閱等)。
## 配置
## 設定
要激活理接收的电子邮件消息功能,您需要在配置文件中配置 `email.incoming` 部分。
要激活理接收的電子郵件消息功能,您需要在設定文件中設定 `email.incoming` 部分。
`REPLY_TO_ADDRESS` 包含电子邮件客户端将要回的地址。
該地址需要包含 `%{token}` 位符,該位符被替為描述使用者/操作的令牌。
位符在地址中只能出現一次,並且必須位地址的使用者部分(`@` 之前)。
`REPLY_TO_ADDRESS` 包含電子郵件客戶端將要回的地址。
該地址需要包含 `%{token}` 位符,該位符被替為描述使用者/操作的令牌。
位符在地址中只能出現一次,並且必須位地址的使用者部分(`@` 之前)。
使用电子邮件子地址的例可能如下:`incoming+%{token}@example.com`
使用電子郵件子地址的例可能如下:`incoming+%{token}@example.com`
如果使用 catch-all 箱,则占位符可以出現在地址的使用者部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
如果使用 catch-all 箱,則佔位符可以出現在地址的使用者部分的任何位置:`incoming+%{token}@example.com``incoming_%{token}@example.com``%{token}@example.com`
## 安全性
在選择用于接收传入电子邮件的域要小心。
在子域名上接收传入电子邮件,例如 `incoming.example.com`,以防止与运行在 `example.com` 上的其他服可能存在的安全问题
在選擇用於接收傳入電子郵件的域要小心。
在子域名上接收傳入電子郵件,例如 `incoming.example.com`,以防止與運行在 `example.com` 上的其他服可能存在的安全問題
@@ -7,37 +7,37 @@ aliases:
- /zh-tw/issue-pull-request-templates
---
# 模板建立工單与合並請求
# 模板建立工單與合併請求
开发者可以利用问题模板建立工單与合並請求,其目的在于规范参与者的言表
開發者可以利用問題模板建立工單與合併請求,其目的在於規範參與者的言表
## 模板介
## 模板介
Gitea 支持两种格式的模板:Markdown 和 YAML。
Gitea 支援兩種格式的模板:Markdown 和 YAML。
### Markdown 模板
在 Gitea 中存在两种用途的 Markdown 模板:
在 Gitea 中存在兩種用途的 Markdown 模板:
- `ISSUE_TEMPLATE/bug-report.md`于规范工單的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md`于规范合並請求的 Markdown 文本描述
- `ISSUE_TEMPLATE/bug-report.md`於規範工單的 Markdown 文本描述
- `PULL_REQUEST_TEMPLATE.md`於規範合併請求的 Markdown 文本描述
對於以上 Markdown 模板,我们推荐您将它们放置到项目目錄 `.gitea` 進行收
對於以上 Markdown 模板,我們推薦您將它們放置到專案目錄 `.gitea` 進行收
### YAML 模板
用 YAML 语法编写的模板相比 Markdown 可以現更富的功能,利用表單实現诸如:问卷调查、字符校。在 Gitea 中的 YAML 同样支持两种用途:
用 YAML 語法編寫的模板相比 Markdown 可以現更富的功能,利用表單實現諸如:問卷調查、字符校。在 Gitea 中的 YAML 同樣支援兩種用途:
- `ISSUE_TEMPLATE/bug-report.yaml`建立问卷调查形式的工單
- `PULL_REQUEST_TEMPLATE.yaml`建立表單形式的合請求
- `ISSUE_TEMPLATE/bug-report.yaml`建立問卷調查形式的工單
- `PULL_REQUEST_TEMPLATE.yaml`建立表單形式的合請求
對於以上 YAML 模板,我们同样推荐您将它们放置到项目目錄 `.gitea` 進行收
對於以上 YAML 模板,我們同樣推薦您將它們放置到專案目錄 `.gitea` 進行收
##### 表單支通過 URL 查參數
##### 表單支通過 URL 查參數
新建工單面 URL 以 `?title=Issue+Title&body=Issue+Text` 為查參數,表單使用其中的參數(key-value)填充表單容。
新建工單面 URL 以 `?title=Issue+Title&body=Issue+Text` 為查參數,表單使用其中的參數(key-value)填充表單容。
### Gitea 支的模板文件路
### Gitea 支的模板文件路
工單模板文件名:
@@ -60,7 +60,7 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
- `.github/issue_template.yaml`
- `.github/issue_template.yml`
請求模板:
請求模板:
- `PULL_REQUEST_TEMPLATE.md`
- `PULL_REQUEST_TEMPLATE.yaml`
@@ -83,7 +83,7 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
#### 工單模板目錄
工單存在多類型,Gitea 支持将工單模板一收`ISSUE_TEMPLATE` 目錄。以下是 Gitea 支的工單模板目錄:
工單存在多類型,Gitea 支援將工單模板一收`ISSUE_TEMPLATE` 目錄。以下是 Gitea 支的工單模板目錄:
- `ISSUE_TEMPLATE`
- `issue_template`
@@ -94,9 +94,9 @@ Gitea 支持两种格式的模板:Markdown 和 YAML。
- `.gitlab/ISSUE_TEMPLATE`
- `.gitlab/issue_template`
目錄支混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工單模板。另外,合請求模板不支目錄存放。
目錄支混合存放 Markdown (`.md`) 或 YAML (`.yaml`/`.yml`) 格式的工單模板。另外,合請求模板不支目錄存放。
## Markdown 模板
## Markdown 模板
```md
---
@@ -112,24 +112,24 @@ labels:
This is the template!
```
上面的例表示使用者列表中選择一个工單模板,列表展示模板名稱 `Template Name` 和模板描述 `This template is for testing!`。 同时,标题会预先填充為 `[TEST]`,而正文将预先填充 `This is the template!`。該 Issue 被指派 `user1`。 最Issue 還被分配两个標籤,`bug``help needed`,並且将问题指向 `main` 分支。
上面的例表示使用者列表中選擇一個工單模板,列表展示模板名稱 `Template Name` 和模板描述 `This template is for testing!`。 同時,標題會預先填充為 `[TEST]`,而正文將預先填充 `This is the template!`。該 Issue 被指派 `user1`。 最Issue 還被分配兩個標籤,`bug``help needed`,並且將問題指向 `main` 分支。
## YAML 模板
## YAML 模板
YAML 模板格式如下,相比 Markdown 模板提供了更多用性的功能。
YAML 模板格式如下,相比 Markdown 模板提供了更多用性的功能。
```yaml
name: 表單名稱
about: 表單描述
title: 默认标题
body: 主體
type: 定表單元素類型
id: 定表單标号
attributes: 展的
validations: 容校
title: 默認標題
body: 主體
type: 定表單元素類型
id: 定表單標號
attributes: 展的
validations: 容校
```
下例 YAML 配置文件完整定了一个用于提交 bug 的问卷调查。
下例 YAML 設定文件完整定了一個用於提交 bug 的問卷調查。
```yaml
name: Bug Report
@@ -195,89 +195,89 @@ body:
### Markdown 段落
您可以在 YAML 模板中使用 `markdown` 元素為开发者提供外的上下文支撑,这部分内容会作為建立工單的提示但不作為工單容提交。
您可以在 YAML 模板中使用 `markdown` 元素為開發者提供外的上下文支撐,這部分內容會作為建立工單的提示但不作為工單容提交。
`attributes`提供了以下展能力:
`attributes`提供了以下展能力:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ------- | ------------------------------ | ---- | ------ | ------ | ------ |
| `value` | 渲染的文本。支 Markdown 格式 | 必選 | 字符串 | - | - |
| `value` | 渲染的文本。支 Markdown 格式 | 必選 | 字符串 | - | - |
### Textarea 多行文本入框
### Textarea 多行文本入框
您可以使用 `textarea` 元素在表單中添加多行文本入框。 除了入文本,开发者還可以在 `textarea` 域附加文件。
您可以使用 `textarea` 元素在表單中添加多行文本入框。 除了入文本,開發者還可以在 `textarea` 域附加文件。
`attributes`提供了以下展能力:
`attributes`提供了以下展能力:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ------------- | ----------------------------------------------------------------------------------------------------- | ---- | ------ | -------- | ------------------ |
| `label` | 期使用者入的短描述,也以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指的文本域的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的位符,在文本域空白呈現 | 可選 | 字符串 | 空字符串 | - |
| `value` | 在文本域中填充的文本。 | 可選 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本格式化為代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 | 可選 | 字符串 | - | Gitea 支持的语言。 |
| `label` | 期使用者入的短描述,也以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指的文本域的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的位符,在文本域空白呈現 | 可選 | 字符串 | 空字符串 | - |
| `value` | 在文本域中填充的文本。 | 可選 | 字符串 | - | - |
| `render` | 如果提供了值,提交的文本格式化為程式碼塊。 提供此鍵時,文本區域將不會擴展到文件附件或 Markdown 編輯。 | 可選 | 字符串 | - | Gitea 支援的語言。 |
`validations`提供以下文本校參數:
`validations`提供以下文本校參數:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
### Input 單行入框
### Input 單行入框
您可以使用 `input` 元素添加單行文本字段到表單。
您可以使用 `input` 元素添加單行文本欄位到表單。
`attributes`提供了以下展能力:
`attributes`提供了以下展能力:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ------------- | ---------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 期使用者入的短描述,也以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指导的字段的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的位符,在字段空白呈現。 | 可選 | 字符串 | 空字符串 | - |
| `value` | 字段中预填的文本。 | 可選 | 字符串 | - | - |
| `label` | 期使用者入的短描述,也以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指導的欄位的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `placeholder` | 半透明的位符,在欄位空白呈現。 | 可選 | 字符串 | 空字符串 | - |
| `value` | 欄位中預填的文本。 | 可選 | 字符串 | - | - |
`validations`提供以下文本校參數:
`validations`提供以下文本校參數:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ----------- | -------------------------------- | ---- | ------ | ------ | -------------------------------------------------------------- |
| `required` | 防止在未填内容时提交表單。 | 可選 | 布型 | false | - |
| `is_number` | 防止在未填数字时提交表單。 | 可選 | 布型 | false | - |
| `regex` | 直到足了与正则表达式匹配的值。 | 可選 | 字符串 | - | [则表达](https://en.wikipedia.org/wiki/Regular_expression) |
| `required` | 防止在未填內容時提交表單。 | 可選 | 布型 | false | - |
| `is_number` | 防止在未填數字時提交表單。 | 可選 | 布型 | false | - |
| `regex` | 直到滿足了與正則表達式匹配的值。 | 可選 | 字符串 | - | [則表達](https://en.wikipedia.org/wiki/Regular_expression) |
### Dropdown 下拉菜單
您可以使用 `dropdown` 元素在表單中添加下拉菜單。
`attributes`提供了以下展能力:
`attributes`提供了以下展能力:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ------------- | --------------------------------------------------------- | ---- | ---------- | -------- | ------ |
| `label` | 期使用者入的短描述,以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指的下拉列表的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `multiple` | 定使用者是否可以選择多个選项。 | 可選 | 布型 | false | - |
| `options` | 使用者可以選的選列表。 不能為空,所有選必須是不同的。 | 必選 | 字符串数组 | - | - |
| `label` | 期使用者入的短描述,以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 提供上下文或指的下拉列表的描述,以表單形式示。 | 可選 | 字符串 | 空字符串 | - |
| `multiple` | 定使用者是否可以選擇多個選項。 | 可選 | 布型 | false | - |
| `options` | 使用者可以選的選列表。 不能為空,所有選必須是不同的。 | 必選 | 字符串數組 | - | - |
`validations`提供以下文本校參數:
`validations`提供以下文本校參數:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ---------- | ---------------------------- | ---- | ------ | ------ | ------ |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
### Checkboxes 選框
### Checkboxes 選框
您可以使用 `checkboxes` 元素添加一组复選框到表單。
您可以使用 `checkboxes` 元素添加一組復選框到表單。
`attributes`提供了以下展能力:
`attributes`提供了以下展能力:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ------------- | ----------------------------------------------------- | ---- | ------ | -------- | ------ |
| `label` | 期使用者入的短描述,以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 選框集的描述,以表單形式示。 支 Markdown 格式。 | 可選 | 字符串 | 空字符串 | - |
| `options` | 使用者可以選择的复選框列表。 有关语法,請参阅下文。 | 必選 | 数组 | - | - |
| `label` | 期使用者入的短描述,以表單形式示。 | 必選 | 字符串 | - | - |
| `description` | 選框集的描述,以表單形式示。 支 Markdown 格式。 | 可選 | 字符串 | 空字符串 | - |
| `options` | 使用者可以選擇的復選框列表。 有關語法,請參閱下文。 | 必選 | 數組 | - | - |
對於 `options`,您可以设置以下參數:
對於 `options`,您可以設定以下參數:
| | 描述 | 必選 | 類型 | 默认值 | 有效值 |
| | 描述 | 必選 | 類型 | 預設值 | 有效值 |
| ---------- | --------------------------------------------------------------------------------- | ---- | ------ | ------ | ------ |
| `label` | 選项的标识符,示在表單中。 支 Markdown 用粗體或斜體文本格式化和超文本接。 | 必選 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
| `label` | 選項的標識符,示在表單中。 支 Markdown 用粗體或斜體文本格式化和超文本接。 | 必選 | 字符串 | - | - |
| `required` | 防止在元素完成之前提交表單。 | 可選 | 布型 | false | - |
@@ -8,26 +8,26 @@ aliases:
# 標籤
您可以使用標籤工單和合請求進行分,並提高对它们的概
您可以使用標籤工單和合請求進行分,並提高對它們的概
## 建立標籤
對於存放庫,可以在 `工單(Issues` 中點擊 `標籤(Labels` 建立標籤。
對於存放庫,可以在 `工單(Issues` 中點擊 `標籤(Labels` 建立標籤。
對於組織,您可以定組織级别的標籤,些標籤所有組織存放庫共享,包括已存在的存放庫和新建立的存放庫。可以在組織的 `设置Settings` 中建立組織级别的標籤。
對於組織,您可以定組織級別的標籤,些標籤所有組織存放庫共享,包括已存在的存放庫和新建立的存放庫。可以在組織的 `設定Settings` 中建立組織級別的標籤。
標籤具有必填的名稱和色,可選的描述,以及必須是独占的或非独占的(下面的“作用域標籤”)。
標籤具有必填的名稱和色,可選的描述,以及必須是獨佔的或非獨佔的(下面的“作用域標籤”)。
您建立一存放庫,可以過使用 `工單標籤(Issue Labels`项来選择標籤集。該選列出了一些在您的例上 [局配置的可用標籤集](../administration/customizing-gitea.md#labels)。在建立存放庫时,这些標籤也被建立。
您建立一存放庫,可以過使用 `工單標籤(Issue Labels`項來選擇標籤集。該選列出了一些在您的例上 [域設定的可用標籤集](../administration/customizing-gitea.md)。在建立存放庫時,這些標籤也被建立。
## 作用域標籤
作用域標籤用于确保将至多一具有相同作用域的標籤分配工單或合請求。例如,如果標籤 `kind/bug``kind/enhancement`独占選项被设置,那工單只能被分為 bug 或 enhancement 中的一
作用域標籤用於確保將至多一具有相同作用域的標籤分配工單或合請求。例如,如果標籤 `kind/bug``kind/enhancement`獨佔選項被設定,那工單只能被分為 bug 或 enhancement 中的一
作用域標籤的名稱必須包含 `/`(不能在名稱的任一端)。標籤的作用域是基于最后一个 `/` 定的,因此例如標籤 `scope/subscope/item` 的作用域是 `scope/subscope`
作用域標籤的名稱必須包含 `/`(不能在名稱的任一端)。標籤的作用域是基於最後一個 `/` 定的,因此例如標籤 `scope/subscope/item` 的作用域是 `scope/subscope`
## 按標籤
## 按標籤
工單和合請求列表可以按標籤進行選。選择多个標籤将显示具有所有選定標籤的工單和合請求。
工單和合請求列表可以按標籤進行選。選擇多個標籤將顯示具有所有選定標籤的工單和合請求。
通過按住 alt 键並單擊標籤,可以具有所選標籤的工單和合請求列表中排除。
按住 alt 鍵並點擊標籤,可以具有所選標籤的工單和合請求列表中排除。
@@ -6,138 +6,138 @@ aliases:
- /zh-tw/automatically-linked-references
---
# 自动链接引用
# 自動鏈接引用
發佈工單、合請求或评论时,文本描述被解析以查找引用。些引用将显示為工單视图中的接,並且在某些情况下会触发特定的“操作”。
發佈工單、合請求或評論時,文本描述被解析以查找引用。些引用將顯示為工單視圖中的接,並且在某些情況下會觸發特定的“操作”。
似地,列出提交消息,它们也会被解析,並且当它们被推送到主分支可以触发“操作”。
似地,列出提交消息,它們也會被解析,並且當它們被推送到主分支可以觸發“操作”。
為了防止意外建立引用,對於引用的识别有一定的規則。例如,它不應該包含在代码文本部。它還應該在周的文本中合理清晰(例如,使用空格)。
為了防止意外建立引用,對於引用的識別有一定的規則。例如,它不應該包含在程式碼文本部。它還應該在周的文本中合理清晰(例如,使用空格)。
## 使用者、团队和組織提及
## 使用者、團隊和組織提及
找到形式為 `@username` 的文本,並且 `username` 現有使用者的名稱匹配时,将建立一“提及”引用。这将通過文本更改為指向該使用者个人资料的链接来显示,並根被提及的使用者是否具有访问内容所需的权限来可能建立通知。
找到形式為 `@username` 的文本,並且 `username` 現有使用者的名稱匹配時,將建立一“提及”引用。這將通過文本更改為指向該使用者個人資料的鏈接來顯示,並根被提及的使用者是否具有訪問內容所需的權限來可能建立通知。
例:
例:
> [@John](#),你能看一下这个吗
> [@John](#),你能看一下這個嗎
對於团队和組織也是有效的:
對於團隊和組織也是有效的:
> [@Documenters](#),我需要為此進行规划
> [@CoolCompanyInc](#)这个问题关系到我所有人!
> [@Documenters](#),我需要為此進行規劃
> [@CoolCompanyInc](#)這個問題關係到我所有人!
团队将在适当时收到件通知,但整組織不收到通知。
團隊將在適當時收到件通知,但整組織不收到通知。
提交消息不会产生使用者通知。
提交消息不會產生使用者通知。
## 提交
可以使用提交的 SHA1 哈希或至少七字符的一部分引用提交。它们将显示為指向相應提交的接。
可以使用提交的 SHA1 哈希或至少七字符的一部分引用提交。它們將顯示為指向相應提交的接。
例:
例:
> 这个错误是在 [e59ff077](#) 中引入的
> 這個錯誤是在 [e59ff077](#) 中引入的
## 工單和合請求
## 工單和合請求
可以使用單的符 `#1234` 建立另一工單或合請求的引用,其中 _1234_ 是同一存放庫中一工單或合請求的编号。这些引用将显示為指向被引用容的接。
可以使用單的符 `#1234` 建立另一工單或合請求的引用,其中 _1234_ 是同一存放庫中一工單或合請求的編號。這些引用將顯示為指向被引用容的接。
建立此類型引用的效果是,在被引用的文中建立一“通知”,前提是引用的建立者其具有读取权限。
建立此類型引用的效果是,在被引用的文中建立一“通知”,前提是引用的建立者其具有讀取權限。
例:
例:
> 似乎 [#1234](#) 相
> 似乎 [#1234](#) 相
還可以使用形式 `owner/repository#1234` 引用其他存放庫中的工單和合請求:
還可以使用形式 `owner/repository#1234` 引用其他存放庫中的工單和合請求:
> 似乎 [mike/compiler#1234](#) 相
> 似乎 [mike/compiler#1234](#) 相
或者也可以使用 `!1234`号。虽然在 Gitea 中合請求是工單的一形式,但 `#1234` 形式总是链接到工單;如果接的目恰好是一个合並請求,Gitea 会适当地進行重定向。而使用 `!1234`号,则会建立一个合並請求接,根需要被重定向到工單。然而,如果使用外部跟器,这个区别可能很重要,因為工單和合請求的接是不能互的。
或者也可以使用 `!1234`號。雖然在 Gitea 中合請求是工單的一形式,但 `#1234` 形式總是鏈接到工單;如果接的目恰好是一個合併請求,Gitea 會適當地進行重定向。而使用 `!1234`號,則會建立一個合併請求接,根需要被重定向到工單。然而,如果使用外部跟器,這個區別可能很重要,因為工單和合請求的接是不能互的。
## 可操作的引用在合請求和提交消息中
## 可操作的引用在合請求和提交消息中
,一提交或合請求可能会修复或重新出現在某特定工單中。Gitea 支在引用之前加上特定的“关键字”来关闭和重新打被引用的工單。常见的关键字包括“closes”、“fixes”、“reopens”等。这个列表可以由站管理進行 [定义](../administration/config-cheat-sheet.md)。
,一提交或合請求可能會修復或重新出現在某特定工單中。Gitea 支在引用之前加上特定的“關鍵字”來關閉和重新打被引用的工單。常見的關鍵字包括“closes”、“fixes”、“reopens”等。這個列表可以由站管理進行 [](../administration/config-cheat-sheet)。
例:
例:
> 这个合並請求 _closes_ [#1234](#)
> 這個合併請求 _closes_ [#1234](#)
如果可操作的引用被接受,这将在被引用的工單上建立一通知,宣布当引用的合請求被合並时該工單将被关闭
如果可操作的引用被接受,這將在被引用的工單上建立一通知,宣佈當引用的合請求被合併時該工單將被關閉
為了接受可操作的引用,必須足以下至少一项条件之一:
為了接受可操作的引用,必須滿足以下至少一項條件之一:
- 评论者在建立引用具有关闭或重新打工單的限。
- 引用位提交消息中。
- 引用作為合請求描述的一部分發佈。
- 評論者在建立引用具有關閉或重新打工單的限。
- 引用位提交消息中。
- 引用作為合請求描述的一部分發佈。
在最后一种情况下,只有当合並合並請求的人具有相應权限时,工單才会被关闭或重新打
在最後一種情況下,只有當合併合併請求的人具有相應權限時,工單纔會被關閉或重新打
此外,只有合請求和提交消息可以建立一操作,只有工單可以通過这种方式被关闭或重新打
此外,只有合請求和提交消息可以建立一操作,只有工單可以透過這種方式被關閉或重新打
默认的关键字如下:
預設的關鍵字如下:
- **关闭工單**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打工單**: reopen, reopens, reopened
- **關閉工單**: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打工單**: reopen, reopens, reopened
## 合請求和提交消息中的时间跟踪
## 合請求和提交消息中的時間跟蹤
提交或合並合並請求致自动关闭工單,還可以過提交消息添加解此工單所花费的时间
提交或合併合併請求致自動關閉工單,還可以過提交消息添加解此工單所花費的時間
要指定解工單所花费的时间,需要在工單编号后面以 `@<number><time-unit>` 的格式指定时间。在一提交消息中,可以指定多已解的工單,並為每工單指定花费的时间
要指定解工單所花費的時間,需要在工單編號後面以 `@<number><time-unit>` 的格式指定時間。在一提交消息中,可以指定多已解的工單,並為每工單指定花費的時間
持的时间單位(`<time-unit>`):
援的時間單位(`<time-unit>`):
- `m` - 分
- `h` - 小
- `d` - 天(相当于 8 小
- `w` - 周(相当于 5 天)
- `mo` - 月(相当于 4 周)
- `m` - 分
- `h` - 小
- `d` - 天(相當於 8 小
- `w` - 周(相當於 5 天)
- `mo` - 月(相當於 4 周)
指定时间的数字(`<number>`)也可以是小,例如 `@1.5h` 表示一小半。多个时间單位可以合使用,例如 `@1h10m` 表示 1 小 10 分
指定時間的數字(`<number>`)也可以是小,例如 `@1.5h` 表示一小半。多個時間單位可以合使用,例如 `@1h10m` 表示 1 小 10 分
提交消息例:
提交消息例:
> Fixed #123 spent @1h, refs #102, fixes #124 @1.5h
这将导致工單 #123 增加 1 小,工單 #124 增加 1 小半。
這將導致工單 #123 增加 1 小,工單 #124 增加 1 小半。
## 外部跟
## 外部跟
Gitea 支使用外部工單跟器,並可以在合請求中建立外部管的工單的引用。但是,如果外部跟器使用数字来标识工單,那么它们将与 Gitea 中管的合請求無法分。為了解决这个问题Gitea 允使用 `!` 标记来标识合並請求。例如:
Gitea 支使用外部工單跟器,並可以在合請求中建立外部管的工單的引用。但是,如果外部跟器使用數字來標識工單,那麼它們將與 Gitea 中管的合請求無法分。為瞭解決這個問題Gitea 允使用 `!` 標記來標識合併請求。例如:
> 是工單 [#1234](#),並接到外部跟器。
> 是合請求 [!1234](#),並接到 Gitea 中的合請求。
> 是工單 [#1234](#),並接到外部跟器。
> 是合請求 [!1234](#),並接到 Gitea 中的合請求。
在工單和合請求中,`!``#` 可以互使用,除非需要進行分。如果存放庫使用外部跟器,默认情况下,合提交消息使用 `!` 作為引用。
在工單和合請求中,`!``#` 可以互使用,除非需要進行分。如果存放庫使用外部跟器,預設情況下,合提交消息使用 `!` 作為引用。
## 工單和合請求引用摘要
## 工單和合請求引用摘要
下表明了工單和合請求的不同類型的交叉引用。在例中,`User1/Repo1` 指的是使用引用的存放庫,而 `UserZ/RepoZ` 表示另一存放庫。
下表明了工單和合請求的不同類型的交叉引用。在例中,`User1/Repo1` 指的是使用引用的存放庫,而 `UserZ/RepoZ` 表示另一存放庫。
| 在 User1/Repo1 中的引用 | Repo1 的工單是外部的 | RepoZ 的工單是外部的 | 渲染效果 |
| ----------------------- | :------------------: | :------------------: | --------------------------------------------- |
| `#1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `!1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `#1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ 1234 |
| `!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1#1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `User1/Repo1!1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `User1/Repo1#1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ 1234 |
| `User1/Repo1!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 接到 `UserZ/RepoZ` 中的工單/合請求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 接到 `UserZ/RepoZ` 中的工單/合請求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 接到 `UserZ/RepoZ`_外部工單_ 1234 |
| `UserZ/RepoZ!1234` | - | 是 | 接到 `UserZ/RepoZ`_PR_ 1234 |
| **字母字工單编号:** | - | - | - |
| `AAA-1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ `AAA-1234` |
| `!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| _不支_ | - | 是 | 接到 `UserZ/RepoZ`_外部工單_ `AAA-1234` |
| `UserZ/RepoZ!1234` | - | 是 | 接到 `UserZ/RepoZ` 中的 _PR_ 1234 |
| `#1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `!1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `#1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ 1234 |
| `!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1#1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `User1/Repo1!1234` | 否 | - | 接到 `User1/Repo1` 中的工單/合請求 1234 |
| `User1/Repo1#1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ 1234 |
| `User1/Repo1!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `UserZ/RepoZ#1234` | - | 否 | 接到 `UserZ/RepoZ` 中的工單/合請求 1234 |
| `UserZ/RepoZ!1234` | - | 否 | 接到 `UserZ/RepoZ` 中的工單/合請求 1234 |
| `UserZ/RepoZ#1234` | - | 是 | 接到 `UserZ/RepoZ`_外部工單_ 1234 |
| `UserZ/RepoZ!1234` | - | 是 | 接到 `UserZ/RepoZ`_PR_ 1234 |
| **字母字工單編號:** | - | - | - |
| `AAA-1234` | 是 | - | 接到 `User1/Repo1`_外部工單_ `AAA-1234` |
| `!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| `User1/Repo1!1234` | 是 | - | 接到 `User1/Repo1`_PR_ 1234 |
| _不支_ | - | 是 | 接到 `UserZ/RepoZ`_外部工單_ `AAA-1234` |
| `UserZ/RepoZ!1234` | - | 是 | 接到 `UserZ/RepoZ` 中的 _PR_ 1234 |
_最一部分适用于使用字母字格式的外部工單跟器的存放庫。_
_最一部分適用於使用字母字格式的外部工單跟器的存放庫。_
_**-**: 不用_
_**-**: 不用_
注意:不完全支具有不同類型工單(外部 vs. 部)的存放庫之的自引用,可能会导致無效接。
注意:不完全支具有不同類型工單(外部 vs. 部)的存放庫之的自引用,可能會導致無效接。
@@ -7,11 +7,11 @@ aliases:
- /zh-tw/merge-message-templates
---
# 合消息模板
# 合消息模板
## 文件名
PR 默认合並消息模板可能的文件名:
PR 預設合併消息模板可能的文件名:
- `.gitea/default_merge_message/MERGE_TEMPLATE.md`
- `.gitea/default_merge_message/REBASE_TEMPLATE.md`
@@ -20,28 +20,28 @@ PR 默认合並消息模板可能的文件名:
- `.gitea/default_merge_message/MANUALLY-MERGED_TEMPLATE.md`
- `.gitea/default_merge_message/REBASE-UPDATE-ONLY_TEMPLATE.md`
##
##
您可以在些模板中使用以下以 `${}`围的变量,这些变量遵循 [os.Expand](https://pkg.go.dev/os#Expand) 法:
您可以在些模板中使用以下以 `${}`圍的變量,這些變量遵循 [os.Expand](https://pkg.go.dev/os#Expand) 法:
- BaseRepoOwnerName:此合請求的基存放庫所有者名稱
- BaseRepoName:此合請求的基存放庫名稱
- BaseBranch:此合請求的基存放庫目分支名稱
- HeadRepoOwnerName:此合請求的源存放庫所有者名稱
- HeadRepoName:此合請求的源存放庫名稱
- HeadBranch:此合請求的源存放庫分支名稱
- PullRequestTitle:合請求的标题
- PullRequestDescription:合請求的描述
- PullRequestPosterName:合請求的提交者名稱
- PullRequestIndex:合請求的索引
- PullRequestReference:合請求的引用字符索引。例如,#1、!2
- ClosingIssues:返回一包含由此合請求关闭的所有工單的字符串。例如 `close #1, close #2`
- ReviewedOn: 該提交所的合請求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 同意的此合請求。例如: `Reviewed-by: Jane Doe <[email protected]>`
- BaseRepoOwnerName:此合請求的基存放庫所有者名稱
- BaseRepoName:此合請求的基存放庫名稱
- BaseBranch:此合請求的基存放庫目分支名稱
- HeadRepoOwnerName:此合請求的源存放庫所有者名稱
- HeadRepoName:此合請求的源存放庫名稱
- HeadBranch:此合請求的源存放庫分支名稱
- PullRequestTitle:合請求的標題
- PullRequestDescription:合請求的描述
- PullRequestPosterName:合請求的提交者名稱
- PullRequestIndex:合請求的索引
- PullRequestReference:合請求的引用字符索引。例如,#1、!2
- ClosingIssues:返回一包含由此合請求關閉的所有工單的字符串。例如 `close #1, close #2`
- ReviewedOn: 該提交所的合請求。例如: `Reviewed-on: https://gitea.com/foo/bar/pulls/1`
- ReviewedBy: 同意的此合請求。例如: `Reviewed-by: Jane Doe <[email protected]>`
## 基(Rebase
## 基(Rebase
有合提交的情下進行变基时`REBASE_TEMPLATE.md` 修改最一次提交的消息。此模板還提供以下附加量:
有合提交的情下進行變基時`REBASE_TEMPLATE.md` 修改最一次提交的消息。此模板還提供以下附加量:
- CommitTitle:提交的标题
- CommitTitle:提交的標題
- CommitBody:提交的正文文本
@@ -4,51 +4,51 @@ slug: "alpine"
sidebar_position: 4
---
# Alpine 軟體包儲存庫
# Alpine 套件儲存庫
在您的使用者或組織中發佈 [Alpine](https://pkgs.alpinelinux.org/) 軟體包
在您的使用者或組織中發佈 [Alpine](https://pkgs.alpinelinux.org/) 套件
## 要求
要使用 Alpine 儲存庫,您需要使用像 curl 这样的 HTTP 客户端来上传包,並使用像 apk 这样的包管理器来消费包。
要使用 Alpine 儲存庫,您需要使用像 curl 這樣的 HTTP 客戶端來上傳包,並使用像 apk 這樣的套件管理器來消費包。
以下例使用 `apk`
以下例使用 `apk`
## 配置軟體包儲存庫
## 設定套件儲存庫
注册 Alpine 儲存庫,請 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
註冊 Alpine 儲存庫,請 URL 添加到已知的 apk 源列表中 (`/etc/apk/repositories`):
```
https://gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `owner` | 套件所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的存放庫名 |
如果註冊表是私有的,請在 URL 中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#過-api-認證):
如果註冊表是私有的,請在 URL 中提供憑據。您可以使用密碼或[個人存取權杖](development/api-usage.md#過-api-認證):
```
https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/alpine/<branch>/<repository>
```
Alpine 儲存庫文件使用 RSA 密進行名,apk 必須知道該密。下载公钥並将其存儲`/etc/apk/keys/` 目錄中:
Alpine 儲存庫文件使用 RSA 密進行名,apk 必須知道該密。下載公鑰並將其儲存`/etc/apk/keys/` 目錄中:
```shell
curl -JO https://gitea.example.com/api/packages/{owner}/alpine/key
```
,更新本地軟體包索引:
,更新本地套件索引:
```shell
apk update
```
## 發佈軟體包
## 發佈套件
要發佈一 Alpine 包(`*.apk`),請執行有包容的 HTTP `PUT` 操作,其放在請求體中。
要發佈一 Alpine 包(`*.apk`),請執行有包容的 HTTP `PUT` 操作,其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
@@ -57,8 +57,8 @@ PUT https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}
| 參數 | 描述 |
| ------------ | --------------------------------------------------------------------------------------------------- |
| `owner` | 包的所有者。 |
| `branch` | 分支可以操作系统的发行版本匹配,例如:v3.17。 |
| `repository` | 存放庫可以用[](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main`似的名稱。 |
| `branch` | 分支可以操作系統的發行版本匹配,例如:v3.17。 |
| `repository` | 存放庫可以用[](https://wiki.alpinelinux.org/wiki/Repositories) 或者只是 `main`似的名稱。 |
使用 HTTP 基本身份驗證的範例請求:
@@ -68,20 +68,20 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main
```
如果您使用的是重身份驗證或 OAuth,請使用[個人訪問令牌](development/api-usage.md#authentication)代替密碼。
您不能具有相同名稱的文件次發佈到一包中。您必須首先除現有的包文件。
如果您使用的是重身份驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)代替密碼。
您不能具有相同名稱的文件次發佈到一包中。您必須首先除現有的包文件。
服务器将以以下的 HTTP 狀態碼回應:
伺服器將以以下的 HTTP 狀態碼回應:
| HTTP 狀態碼 | 含 |
| HTTP 狀態碼 | 含 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名稱、版本、分支、存放庫或架無效。 |
| `409 Conflict` | 具有相同參數合的包文件已存在于軟體包中。 |
| `201 Created` | 套件已發佈。 |
| `400 Bad Request` | 套件的名稱、版本、分支、存放庫或架無效。 |
| `409 Conflict` | 具有相同參數合的包文件已存在於套件中。 |
## 删除軟體包
## 刪除套件
除 Alpine 包,執行 HTTP 的 DELETE 操作。如果有文件,这将同时删除包版本。
除 Alpine 包,執行 HTTP 的 DELETE 操作。如果有文件,這將同時刪除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repository}/{architecture}/{filename}
@@ -89,11 +89,11 @@ DELETE https://gitea.example.com/api/packages/{owner}/alpine/{branch}/{repositor
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
| `branch` | 要使用的分支名 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架 |
| `filename` | 要除的文件名 |
| `architecture` | 套件的架 |
| `filename` | 要除的文件名 |
使用 HTTP 基本身份驗證的範例請求:
@@ -102,16 +102,16 @@ curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/alpine/v3.17/main/test-package-1.0.0.apk
```
服务器将以以下的 HTTP 狀態碼回應:
伺服器將以以下的 HTTP 狀態碼回應:
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到軟體包或文件 |
| `404 Not Found` | 未找到套件或文件 |
## 安裝軟體包
## 安裝套件
Alpine 儲存庫安裝軟體包,請執行以下命令:
Alpine 儲存庫安裝套件,請執行以下命令:
```shell
# use latest version
@@ -6,13 +6,13 @@ sidebar_position: 5
# Arch 儲存庫
在您的使用者或組織中發佈 [Arch](https://archlinux.org/packages/) 軟體包。 Arch 儲存庫的功能像是一個完整的[鏡像Arch 儲存庫](https://wiki.archlinux.org/title/mirrors\),需要調整系統的`/etc/pacman.conf`文件。
在您的使用者或組織中發佈 [Arch](https://archlinux.org/packages/) 套件。 Arch 儲存庫的功能像是一個完整的[鏡像Arch 儲存庫](https://wiki.archlinux.org/title/mirrors\),需要調整系統的`/etc/pacman.conf`文件。
## 需求
系統需要安裝有HTTP客戶端像是`curl`來下載文件,且必須安裝有`pacman`軟體包管理工具。
系統需要安裝有HTTP客戶端像是`curl`來下載文件,且必須安裝有`pacman`套件管理工具。
## 配置 Arch 儲存庫
## 設定 Arch 儲存庫
Arch 儲存庫的軟體都有`gpg`簽名驗證,所以需要匯入驗證需要的公鑰,下面是下載公鑰的範例。
```sh
@@ -30,34 +30,34 @@ pacman-key --add repository.key
pacman-key --lsign-key {key id}
```
匯入驗證的公鑰,接下來要修改pacman的配置檔,位置是`/etc/pacman.conf`,內容如下。
匯入驗證的公鑰,接下來要修改pacman的設定檔,位置是`/etc/pacman.conf`,內容如下。
```conf
[{owner}.gitea.example.com]
SigLevel = Required
Server = https://gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `owner` | 套件所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架 |
| `architecture` | 套件的架 |
如果註冊表是私有的,請在 URL 中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#過-api-認證):
如果註冊表是私有的,請在 URL 中提供憑據。您可以使用密碼或[個人存取權杖](development/api-usage.md#過-api-認證):
```
Server = https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/arch/{repository}/{architecture}
```
## 發佈軟體包
## 發佈套件
要發佈一 Arch 軟體包,請執行有包容的 HTTP `PUT` 操作,其放在請求體中。
要發佈一 Arch 套件,請執行有包容的 HTTP `PUT` 操作,其放在請求體中。
```
PUT https://gitea.example.com/api/packages/{owner}/arch/{repository}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------------ | -------------- |
| `owner` | 軟體包所有者 |
| `owner` | 套件所有者 |
| `repository` | 要使用的存放庫名 |
使用 HTTP 基本身份驗證的範例請求:
@@ -68,31 +68,31 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/arch/core
```
如果您使用的是重身份驗證或 OAuth,請使用[個人訪問令牌](development/api-usage.md#authentication)代替密碼。
您不能具有相同名稱的文件次發佈到一包中。您必須首先除現有的包文件。
如果您使用的是重身份驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#透過-api-認證)代替密碼。
您不能具有相同名稱的文件次發佈到一包中。您必須首先除現有的包文件。
服务器将以以下的 HTTP 狀態碼回應:
| HTTP 狀態碼 | 含 |
伺服器將以以下的 HTTP 狀態碼回應:
| HTTP 狀態碼 | 含 |
| ----------------- | ------------------------------------------ |
| `201 Created` | 軟體包已發佈。 |
| `400 Bad Request` | 軟體包的名稱、版本、分支、存放庫或架無效。 |
| `409 Conflict` | 具有相同參數合的包文件已存在于軟體包中。 |
| `201 Created` | 套件已發佈。 |
| `400 Bad Request` | 套件的名稱、版本、分支、存放庫或架無效。 |
| `409 Conflict` | 具有相同參數合的包文件已存在於套件中。 |
## 安裝軟體包
## 安裝套件
AArch 儲存庫安裝軟體包,請執行以下命令:
AArch 儲存庫安裝套件,請執行以下命令:
```sh
pacman -Sy {package_name}
```
| Parameter | 含 |
| Parameter | 含 |
| -------------- | ----------- |
| `package_name` | 軟體包 |
| `package_name` | 套件 |
## 删除軟體包
## 刪除套件
除 Arch 軟體包,執行 HTTP 的 DELETE 操作。如果有文件,这将同时删除包版本。
除 Arch 套件,執行 HTTP 的 DELETE 操作。如果有文件,這將同時刪除包版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/arch/{repository}/{package_name}/{package_version}/{architecture}
@@ -101,10 +101,10 @@ DELETE https://gitea.example.com/api/packages/{owner}/arch/{repository}/{package
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
| `repository` | 要使用的存放庫名 |
| `architecture` | 軟體包的架 |
| `package_name` | 要除的軟體名 |
| `architecture` | 套件的架 |
| `package_name` | 要除的軟體名 |
| `package_version` | 軟體版本 |
使用 HTTP 基本身份驗證的範例請求:
@@ -114,9 +114,9 @@ curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/arch/core/test-package/1.0.0/x86-64
```
服务器将以以下的 HTTP 狀態碼回應:
伺服器將以以下的 HTTP 狀態碼回應:
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到軟體包或文件 |
| `404 Not Found` | 未找到套件或文件 |
@@ -4,37 +4,37 @@ slug: "cargo"
sidebar_position: 5
---
# Cargo 軟體包註冊表
# Cargo 套件註冊表
為您的使用者或組織發佈 [Cargo](https://doc.rust-lang.org/stable/cargo/) 軟體包
為您的使用者或組織發佈 [Cargo](https://doc.rust-lang.org/stable/cargo/) 套件
## 要求
若要使用 Cargo 軟體包註冊表, 您需要安裝 [Rust 和 Cargo](https://www.rust-lang.org/tools/install).
若要使用 Cargo 套件註冊表, 您需要安裝 [Rust 和 Cargo](https://www.rust-lang.org/tools/install).
Cargo 可用軟體包的信息存儲在一个存儲在 git 存放庫中的軟體包索引中。
这个存放庫是註冊表交互所必需的。
下面的部分将介绍如何建立它。
Cargo 可用套件的資訊儲存在一個儲存在 git 存放庫中的套件索引中。
這個存放庫是註冊表交互所必需的。
下面的部分將介紹如何建立它。
## 索引存放庫
Cargo 可用軟體包的信息存儲在一个存儲在 git 存放庫中的軟體包索引中。
在 Gitea 中,这个存放庫有一特殊的名稱叫做 `_cargo-index`
在上传軟體包之后,它的元数据会自动写入索引中。
不應手修改这个註冊表的容。
Cargo 可用套件的資訊儲存在一個儲存在 git 存放庫中的套件索引中。
在 Gitea 中,這個存放庫有一特殊的名稱叫做 `_cargo-index`
在上傳套件之後,它的元資料會自動寫入索引中。
不應手修改這個註冊表的容。
使用者或組織軟體包设置页面允建立这个索引存放庫以及配置文件。
如果需要,此操作将重写配置文件。
例如,如果 Gitea 例的域名已更改,这将非常有用。
使用者或組織套件設定頁面允建立這個索引存放庫以及設定文件。
如果需要,此操作將重寫設定文件。
例如,如果 Gitea 例的域名已更改,這將非常有用。
如果儲在 Gitea 中的軟體包与索引註冊表中的信息不同步,设置页面允重建这个索引註冊表。
这个操作将遍历註冊表中的所有軟體包,並将它们的信息写入索引中。
如果有很多軟體包,这个過程可能需要一些时间
如果儲在 Gitea 中的套件與索引註冊表中的資訊不同步,設定頁面允重建這個索引註冊表。
這個操作將遍歷註冊表中的所有套件,並將它們的資訊寫入索引中。
如果有很多套件,這個過程可能需要一些時間
## 配置軟體包註冊表
## 設定套件註冊表
注册这个軟體包註冊表,必須更新 Cargo 的配置
以下文本添加到位于当前使用者主目錄中的配置文件中(例如 `~/.cargo/config.toml`):
註冊這個套件註冊表,必須更新 Cargo 的設定
以下文本添加到位於當前使用者主目錄中的設定文件中(例如 `~/.cargo/config.toml`):
```
[registry]
@@ -50,10 +50,10 @@ git-fetch-with-cli = true
| 參數 | 描述 |
| ------- | ---------------- |
| `owner` | 軟體包的所有者。 |
| `owner` | 套件的所有者。 |
如果这个註冊表是私有的或者您想要發佈新的軟體包,您必須配置您的凭据
将凭据部分添加到位于当前使用者主目錄中的凭据文件中(例如 `~/.cargo/credentials.toml`):
如果這個註冊表是私有的或者您想要發佈新的套件,您必須設定您的憑據
將憑據部分添加到位於當前使用者主目錄中的憑據文件中(例如 `~/.cargo/credentials.toml`):
```
[registries.gitea]
@@ -62,21 +62,21 @@ token = "Bearer {token}"
| 參數 | 描述 |
| ------- | ------------------------------------------------------------------------------------- |
| `token` | 您的[个人访问令牌](development/api-usage.md#過-api-認證) |
| `token` | 您的[個人存取權杖](development/api-usage.md#過-api-認證) |
## 發佈軟體包
## 發佈套件
项目中运行以下命令發佈軟體包
專案中運行以下命令發佈套件
```shell
cargo publish
```
如果已存在同名和版本的軟體包,您無法發佈新的軟體包。您必須先除現有的軟體包
如果已存在同名和版本的套件,您無法發佈新的套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝軟體包,請執行以下命令:
從套件註冊表安裝套件,請執行以下命令:
```shell
cargo add {package_name}
@@ -84,9 +84,9 @@ cargo add {package_name}
| 參數 | 描述 |
| -------------- | ------------ |
| `package_name` | 軟體包名稱。 |
| `package_name` | 套件名稱。 |
## 支的命令
## 支的命令
```
cargo publish
@@ -4,24 +4,24 @@ slug: "chef"
sidebar_position: 5
---
# Chef 軟體包註冊表
# Chef 套件註冊表
為您的使用者或組織發佈 [Chef](https://chef.io/) cookbooks。
## 要求
要使用 Chef 軟體包註冊表,您需要使用 [`knife`](https://docs.chef.io/workstation/knife/).
要使用 Chef 套件註冊表,您需要使用 [`knife`](https://docs.chef.io/workstation/knife/).
## 認證
Chef 軟體包註冊表不使用使用者名和密碼進行身份驗證,而是使用私和公钥对請求進行名。
访问軟體包所有者设置页面以建立必要的密钥对
只有公钥存儲在Gitea中。如果您失了私钥的访问权限,您必須重新生成密钥对
[配置 `knife`](https://docs.chef.io/workstation/knife_setup/),使用下的私,並 Gitea 使用者名设置`client_name`
Chef 套件註冊表不使用使用者名和密碼進行身份驗證,而是使用私和公鑰對請求進行名。
前往套件所有者設定頁面以建立必要的密鑰對
只有公鑰儲存在Gitea中。如果您失了私鑰的存取權限,您必須重新生成密鑰對
[設定 `knife`](https://docs.chef.io/workstation/knife_setup/),使用下的私,並 Gitea 使用者名稱設定`client_name`
## 配置軟體包註冊表
## 設定套件註冊表
[`knife` 配置](https://docs.chef.io/workstation/knife_setup/)為使用 Gitea 軟體包註冊表,請 URL 添加到 `~/.chef/config.rb` 文件中。
[`knife` 設定](https://docs.chef.io/workstation/knife_setup/)為使用 Gitea 套件註冊表,請 URL 添加到 `~/.chef/config.rb` 文件中。
```
knife[:supermarket_site] = 'https://gitea.example.com/api/packages/{owner}/chef'
@@ -29,11 +29,11 @@ knife[:supermarket_site] = 'https://gitea.example.com/api/packages/{owner}/chef'
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
## 發佈軟體包
## 發佈套件
若要發佈 Chef 軟體包,請執行以下命令:
若要發佈 Chef 套件,請執行以下命令:
```shell
knife supermarket share {package_name}
@@ -41,19 +41,19 @@ knife supermarket share {package_name}
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_name` | 套件名稱 |
如果已存在同名和版本的軟體包,则無法發佈新的軟體包。您必須先除現有的軟體包
如果已存在同名和版本的套件,則無法發佈新的套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝軟體包,請執行以下命令:
從套件註冊表中安裝套件,請執行以下命令:
```shell
knife supermarket install {package_name}
```
您可以指定軟體包的版本,是可選的:
您可以指定套件的版本,是可選的:
```shell
knife supermarket install {package_name} {package_version}
@@ -61,18 +61,18 @@ knife supermarket install {package_name} {package_version}
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
## 删除軟體包
## 刪除套件
如果您想要註冊表中删除軟體包,請執行以下命令:
如果您想要註冊表中刪除套件,請執行以下命令:
```shell
knife supermarket unshare {package_name}
```
可選地,您可以指定軟體包的版本:
可選地,您可以指定套件的版本:
```shell
knife supermarket unshare {package_name}/versions/{package_version}
@@ -80,5 +80,5 @@ knife supermarket unshare {package_name}/versions/{package_version}
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
@@ -4,19 +4,19 @@ slug: "composer"
sidebar_position: 10
---
# Composer 軟體包註冊表
# Composer 套件註冊表
為您的使用者或組織發佈 [Composer](https://getcomposer.org/) 軟體包
為您的使用者或組織發佈 [Composer](https://getcomposer.org/) 套件
## 要求
要使用 Composer 軟體包註冊表,您可以使用 [Composer](https://getcomposer.org/download/) 消,並使用`curl` 的 HTTP 上传客户端發佈軟體包
要使用 Composer 套件註冊表,您可以使用 [Composer](https://getcomposer.org/download/) 消,並使用`curl` 的 HTTP 上傳客戶端發佈套件
## 發佈軟體包
## 發佈套件
要發佈 Composer 軟體包,請執行 HTTP `PUT` 操作,将軟體包内容放入請求體中。
軟體包内容必須是包含 `composer.json` 文件的压缩 PHP 项目
如果已存在同名和版本的軟體包,则無法發佈新的軟體包。您必須先除現有的軟體包
要發佈 Composer 套件,請執行 HTTP `PUT` 操作,將套件內容放入請求體中。
套件內容必須是包含 `composer.json` 文件的壓縮 PHP 專案
如果已存在同名和版本的套件,則無法發佈新的套件。您必須先除現有的套件
```
PUT https://gitea.example.com/api/packages/{owner}/composer
@@ -24,15 +24,15 @@ PUT https://gitea.example.com/api/packages/{owner}/composer
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
如果 `composer.json` 文件不包含 `version` 性,您必須其作為查參數提供:
如果 `composer.json` 文件不包含 `version` 性,您必須其作為查參數提供:
```
PUT https://gitea.example.com/api/packages/{owner}/composer?version={x.y.z}
```
使用 HTTP 基本身份驗證的例請求:
使用 HTTP 基本身份驗證的例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -40,7 +40,7 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/composer
```
或者将軟體包版本指定為查參數:
或者將套件版本指定為查參數:
```shell
curl --user your_username:your_password_or_token \
@@ -48,18 +48,18 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/composer?version=1.0.3
```
如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼。
如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼。
服务器将以以下 HTTP 状态码響應。
伺服器將以以下 HTTP 狀態碼響應。
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ----------------- | ----------------------------------------------------------- |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名稱和/或版本無效,或具有相同名稱和版本的軟體包已存在 |
| `201 Created` | 套件已發佈 |
| `400 Bad Request` | 套件名稱和/或版本無效,或具有相同名稱和版本的套件已存在 |
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要其添加到 Composer 的 `config.json` 文件中(通常可以在 `<user-home-dir>/.composer/config.json` 中找到):
註冊套件註冊表,您需要其添加到 Composer 的 `config.json` 文件中(通常可以在 `<user-home-dir>/.composer/config.json` 中找到):
```json
{
@@ -71,7 +71,7 @@ curl --user your_username:your_password_or_token \
}
```
要使用凭据访问軟體包註冊表,您必須在 `auth.json` 文件中指定它,如下所示:
要使用憑據訪問套件註冊表,您必須在 `auth.json` 文件中指定它,如下所示:
```json
{
@@ -86,19 +86,19 @@ curl --user your_username:your_password_or_token \
| 參數 | 描述 |
| ---------- | --------------------------- |
| `owner` | 軟體包的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的Gitea密碼或个人访问令牌 |
| `owner` | 套件的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的Gitea密碼或個人存取權杖 |
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝軟體包,請執行以下命令:
從套件註冊表中安裝套件,請執行以下命令:
```shell
composer require {package_name}
```
您可以指定軟體包的版本,是可選的:
您可以指定套件的版本,是可選的:
```shell
composer require {package_name}:{package_version}
@@ -106,5 +106,5 @@ composer require {package_name}:{package_version}
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
@@ -4,17 +4,17 @@ slug: "conan"
sidebar_position: 20
---
# Conan 軟體包註冊表
# Conan 套件註冊表
為您的使用者或組織發佈 [Conan](https://conan.io/) 軟體包
為您的使用者或組織發佈 [Conan](https://conan.io/) 套件
## 要求
要使用 [conan](https://conan.io/downloads.html) 軟體包註冊表,您需要使用 conan 命令行工具来消费和發佈軟體包
要使用 [conan](https://conan.io/downloads.html) 套件註冊表,您需要使用 conan 命令行工具來消費和發佈套件
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要配置一个新的 Conan remote
註冊套件註冊表,您需要設定一個新的 Conan remote
```shell
conan remote add {remote} https://gitea.example.com/api/packages/{owner}/conan
@@ -23,10 +23,10 @@ conan user --remote {remote} --password {password} {username}
| 參數 | 描述 |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `remote` | 程名稱。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼。 |
| `owner` | 軟體包的所有者。 |
| `remote` | 程名稱。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼。 |
| `owner` | 套件的所有者。 |
例如:
@@ -35,9 +35,9 @@ conan remote add gitea https://gitea.example.com/api/packages/testuser/conan
conan user --remote gitea --password password123 testuser
```
## 發佈軟體包
## 發佈套件
通過行以下命令發佈 Conan 軟體包
通過行以下命令發佈 Conan 套件
```shell
conan upload --remote={remote} {recipe}
@@ -45,8 +45,8 @@ conan upload --remote={remote} {recipe}
| 參數 | 描述 |
| -------- | --------------- |
| `remote` | 程名稱 |
| `recipe` | 要上的 recipe |
| `remote` | 程名稱 |
| `recipe` | 要上的 recipe |
For example:
@@ -54,11 +54,11 @@ For example:
conan upload --remote=gitea ConanPackage/1.2@gitea/final
```
Gitea Conan 軟體包註冊表支完整的[版本修](https://docs.conan.io/en/latest/versioning/revisions.html)。
Gitea Conan 套件註冊表支完整的[版本修](https://docs.conan.io/en/latest/versioning/revisions.html)。
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝Conan軟體包,請執行以下命令:
從套件註冊表中安裝Conan套件,請執行以下命令:
```shell
conan install --remote={remote} {recipe}
@@ -66,8 +66,8 @@ conan install --remote={remote} {recipe}
| 參數 | 描述 |
| -------- | --------------- |
| `remote` | 程名稱 |
| `recipe` | 要下的 recipe |
| `remote` | 程名稱 |
| `recipe` | 要下的 recipe |
例如:
@@ -75,7 +75,7 @@ conan install --remote={remote} {recipe}
conan install --remote=gitea ConanPackage/1.2@gitea/final
```
## 支的命令
## 支的命令
```
conan install
@@ -4,17 +4,17 @@ slug: "conda"
sidebar_position: 25
---
# Conda 軟體包註冊表
# Conda 套件註冊表
為您的使用者或組織發佈 [Conda](https://docs.conda.io/en/latest/) 軟體包
為您的使用者或組織發佈 [Conda](https://docs.conda.io/en/latest/) 套件
## 要求
要使用 Conda 軟體包註冊表,您需要使用 [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html) 命令行工具。
要使用 Conda 套件註冊表,您需要使用 [conda](https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html) 命令行工具。
## 配置軟體包註冊表
## 設定套件註冊表
要註冊軟體包註冊表並提供憑證,請编辑您的 `.condarc` 文件:
要註冊套件註冊表並提供憑證,請編輯您的 `.condarc` 文件:
```yaml
channel_alias: https://gitea.example.com/api/packages/{owner}/conda
@@ -24,26 +24,26 @@ default_channels:
- https://gitea.example.com/api/packages/{owner}/conda
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
有關各個設定的解釋,請参阅[官方文](https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html)。
有關各個設定的解釋,請參閱[官方文](https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html)。
如果需要提供憑證,可以将它们作為通道 URL 的一部分嵌入(`https://user:[email protected]/...`)。
如果需要提供憑證,可以將它們作為通道 URL 的一部分嵌入(`https://user:[email protected]/...`)。
## 發佈軟體包
## 發佈套件
要發佈一个軟體包,請執行一HTTP `PUT`操作,請求正文中包含軟體包内容。
要發佈一個套件,請執行一HTTP `PUT`操作,請求正文中包含套件內容。
```
PUT https://gitea.example.com/api/packages/{owner}/conda/{channel}/{filename}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ---------- | --------------------------------------------------------------------------------------------------- |
| `owner` | 軟體包的所有者 |
| `channel` | 軟體包的[通道](https://conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)(可選) |
| `owner` | 套件的所有者 |
| `channel` | 套件的[通道](https://conda.io/projects/conda/en/latest/user-guide/concepts/channels.html)(可選) |
| `filename` | 文件名 |
使用HTTP基本身份驗證的範例請求:
@@ -54,11 +54,11 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/conda/package-1.0.conda
```
如果已存在同名和版本的軟體包,則無法發佈軟體包。您必須先除現有的軟體包
如果已存在同名和版本的套件,則無法發佈套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝軟體包,請執行以下命令之一:
從套件註冊表中安裝套件,請執行以下命令之一:
```shell
conda install {package_name}
@@ -68,6 +68,6 @@ conda install -c {channel} {package_name}
| 參數 | 描述 |
| ----------------- | -------------------- |
| `package_name` | 軟體包的名稱 |
| `package_version` | 軟體包的版本 |
| `channel` | 軟體包的通道(可選) |
| `package_name` | 套件的名稱 |
| `package_version` | 套件的版本 |
| `channel` | 套件的通道(可選) |
@@ -6,31 +6,31 @@ sidebar_position: 30
# 容器註冊表
為您的使用者或組織發佈符合 [Open Container Initiative(OCI)](https://opencontainers.org/) 規範的像。
該容器註冊表遵循 OCI 規範,並支所有容的像類型,如 [Docker](https://www.docker.com/) 和 [Helm Charts](https://helm.sh/)。
為您的使用者或組織發佈符合 [Open Container Initiative(OCI)](https://opencontainers.org/) 規範的像。
該容器註冊表遵循 OCI 規範,並支所有容的像類型,如 [Docker](https://www.docker.com/) 和 [Helm Charts](https://helm.sh/)。
## 目錄
要使用容器註冊表,您可以使用适用于特定像類型的工具。
以下例使用 `docker`端。
要使用容器註冊表,您可以使用適用於特定像類型的工具。
以下例使用 `docker`端。
## 登入容器註冊表
要推送像或者如果像位於註冊表中,您需要進行身份驗證:
要推送像或者如果像位於註冊表中,您需要進行身份驗證:
```shell
docker login gitea.example.com
```
如果您使用的是 2FA 或 OAuth,請使用[個人訪問令牌](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。
如果您使用的是 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。
## 鏡像命名約定
像必須遵循以下命名定:
像必須遵循以下命名定:
`{registry}/{owner}/{image}`
例如,以下是所有者為 `testuser` 的有效鏡像的名稱例:
例如,以下是所有者為 `testuser` 的有效鏡像的名稱例:
`gitea.example.com/testuser/myimage`
@@ -38,11 +38,11 @@ docker login gitea.example.com
`gitea.example.com/testuser/my/image`
**注意:** 該登檔僅支援大小寫不敏感的標籤名稱。因此,`image:tag``image:Tag` 將被視為相同的鏡像和標籤。
**注意:** 該登檔僅支援大小寫不敏感的標籤名稱。因此,`image:tag``image:Tag` 將被視為相同的鏡像和標籤。
## 推送
## 推送
過執行以下命令推送像:
過執行以下命令推送像:
```shell
docker push gitea.example.com/{owner}/{image}:{tag}
@@ -50,9 +50,9 @@ docker push gitea.example.com/{owner}/{image}:{tag}
| 參數 | 描述 |
| ------- | ------------ |
| `owner` | 像的所有者 |
| `image` | 像的名稱 |
| `tag` | 像的標籤 |
| `owner` | 像的所有者 |
| `image` | 像的名稱 |
| `tag` | 像的標籤 |
例如:
@@ -60,9 +60,9 @@ docker push gitea.example.com/{owner}/{image}:{tag}
docker push gitea.example.com/testuser/myimage:latest
```
## 拉取
## 拉取
過執行以下命令拉取像:
過執行以下命令拉取像:
```shell
docker pull gitea.example.com/{owner}/{image}:{tag}
@@ -70,9 +70,9 @@ docker pull gitea.example.com/{owner}/{image}:{tag}
| Parameter | Description |
| --------- | ------------ |
| `owner` | 像的所有者 |
| `image` | 像的名稱 |
| `tag` | 像的標籤 |
| `owner` | 像的所有者 |
| `image` | 像的名稱 |
| `tag` | 像的標籤 |
例如:
@@ -4,17 +4,17 @@ slug: "cran"
sidebar_position: 35
---
# CRAN 軟體包註冊表
# CRAN 套件註冊表
[R](https://www.r-project.org/) 軟體包發佈到您的使用者或組織的似 [CRAN](https://cran.r-project.org/) 的註冊表。
[R](https://www.r-project.org/) 套件發佈到您的使用者或組織的似 [CRAN](https://cran.r-project.org/) 的註冊表。
## 要求
要使用CRAN軟體包註冊表,您需要安裝 [R](https://cran.r-project.org/)。
要使用CRAN套件註冊表,您需要安裝 [R](https://cran.r-project.org/)。
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要其添加到 `Rprofile.site` 文件中,可以是系统级别、使用者级别 `~/.Rprofile`项目级别
註冊套件註冊表,您需要其添加到 `Rprofile.site` 文件中,可以是系統級別、使用者級別 `~/.Rprofile`專案級別
```
options("repos" = c(getOption("repos"), c(gitea="https://gitea.example.com/api/packages/{owner}/cran")))
@@ -22,15 +22,15 @@ options("repos" = c(getOption("repos"), c(gitea="https://gitea.example.com/api/p
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
如果需要提供凭据,可以将它们嵌入到URL(`https://user:[email protected]/...`)中。
如果需要提供憑據,可以將它們嵌入到URL(`https://user:[email protected]/...`)中。
## 發佈軟體包
## 發佈套件
要發佈 R 軟體包,請執行带有軟體包内容的 HTTP `PUT` 操作。
要發佈 R 套件,請執行帶有套件內容的 HTTP `PUT` 操作。
代码軟體包
程式碼套件
```
PUT https://gitea.example.com/api/packages/{owner}/cran/src
@@ -38,9 +38,9 @@ PUT https://gitea.example.com/api/packages/{owner}/cran/src
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
二進制軟體包
二進制套件
```
PUT https://gitea.example.com/api/packages/{owner}/cran/bin?platform={platform}&rversion={rversion}
@@ -48,7 +48,7 @@ PUT https://gitea.example.com/api/packages/{owner}/cran/bin?platform={platform}&
| 參數 | 描述 |
| ---------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
| `platform` | 平台的名稱 |
| `rversion` | 二進制的R版本 |
@@ -60,11 +60,11 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/cran/bin?platform=windows&rversion=4.2
```
如果同名和版本的軟體包已存在,無法發佈軟體包。您必須首先除現有的軟體包
如果同名和版本的套件已存在,無法發佈套件。您必須首先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝R軟體包,請執行以下命令:
從套件註冊表中安裝R套件,請執行以下命令:
```shell
install.packages("{package_name}")
@@ -3,51 +3,51 @@ date: "2023-01-07T00:00:00+00:00"
slug: "debian"
---
# Debian 軟體包註冊表
# Debian 套件註冊表
為您的使用者或組織發佈 [Debian](https://www.debian.org/distrib/packages) 軟體包
為您的使用者或組織發佈 [Debian](https://www.debian.org/distrib/packages) 套件
## 要求
要使用 Debian 註冊表,您需要使用类似于 `curl` 的 HTTP 客端進行上,並使用类似于 `apt`軟體包管理器消费軟體包
要使用 Debian 註冊表,您需要使用類似於 `curl` 的 HTTP 客端進行上,並使用類似於 `apt`套件管理器消費套件
以下例使用 `apt`
以下例使用 `apt`
## 配置軟體包註冊表
## 設定套件註冊表
注册 Debian 註冊表,請 URL 添加到已知 `apt` 源列表中:
註冊 Debian 註冊表,請 URL 添加到已知 `apt` 源列表中:
```shell
echo "deb [signed-by=/etc/apt/keyrings/gitea-{owner}.asc] https://gitea.example.com/api/packages/{owner}/debian {distribution} {component}" | sudo tee -a /etc/apt/sources.list.d/gitea.list
```
| 位符 | 描述 |
| 位符 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `distribution` | 要使用的行版 |
| `component` | 要使用的件 |
| `owner` | 套件的所有者 |
| `distribution` | 要使用的行版 |
| `component` | 要使用的件 |
如果註冊表是私有的,請在 URL 中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#過-api-認證)
如果註冊表是私有的,請在 URL 中提供憑據。您可以使用密碼或[個人存取權杖](development/api-usage.md#過-api-認證)
```shell
echo "deb [signed-by=/etc/apt/keyrings/gitea-{owner}.asc] https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/debian {distribution} {component}" | sudo tee -a /etc/apt/sources.list.d/gitea.list
```
Debian 註冊表文件使用 PGP 密進行名,`apt` 必須知道該密
Debian 註冊表文件使用 PGP 密進行名,`apt` 必須知道該密
```shell
sudo curl https://gitea.example.com/api/packages/{owner}/debian/repository.key -o /etc/apt/keyrings/gitea-{owner}.asc
```
更新本地軟體包索引:
更新本地套件索引:
```shell
apt update
```
## 發佈軟體包
## 發佈套件
要發佈一 Debian 軟體包`*.deb`),執行 HTTP `PUT` 操作,並将軟體包内容放入請求主體中。
要發佈一 Debian 套件`*.deb`),執行 HTTP `PUT` 操作,並將套件內容放入請求主體中。
```
PUT https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{component}/upload
@@ -55,11 +55,11 @@ PUT https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{c
| 參數 | 描述 |
| -------------- | ----------------------------------------------------- |
| `owner` | 軟體包的所有者 |
| `distribution` | 行版,可能操作系统的发行版名稱匹配,例如 `bionic` |
| `component` | 件,可用于分组軟體包,或僅為 `main`似的件。 |
| `owner` | 套件的所有者 |
| `distribution` | 行版,可能操作系統的發行版名稱匹配,例如 `bionic` |
| `component` | 件,可用於分組套件,或僅為 `main`似的件。 |
使用 HTTP 基本身份驗證的例請求:
使用 HTTP 基本身份驗證的例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -67,20 +67,20 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/debian/pool/bionic/main/upload
```
如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼。
您無法向軟體包中多次發佈具有相同名稱的文件。您必須首先除現有的軟體包版本。
如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼。
您無法向套件中多次發佈具有相同名稱的文件。您必須首先除現有的套件版本。
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
| HTTP 状态码 | 意 |
| HTTP 狀態碼 | 意 |
| ----------------- | ---------------------------------------- |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名稱、版本、行版、件或架無效 |
| `409 Conflict` | 具有相同參數合的軟體包文件已存在 |
| `201 Created` | 套件已發佈 |
| `400 Bad Request` | 套件名稱、版本、行版、件或架無效 |
| `409 Conflict` | 具有相同參數合的套件文件已存在 |
## 删除軟體包
## 刪除套件
除 Debian 軟體包,請執行 HTTP `DELETE` 操作。如果有文件留下,这将同时删除軟體包版本。
除 Debian 套件,請執行 HTTP `DELETE` 操作。如果有文件留下,這將同時刪除套件版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}/{component}/{package_name}/{package_version}/{architecture}
@@ -88,30 +88,30 @@ DELETE https://gitea.example.com/api/packages/{owner}/debian/pool/{distribution}
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `distribution` | 軟體包发行版 |
| `component` | 軟體包组件 |
| `architecture` | 軟體包架构 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
| `distribution` | 套件發行版 |
| `component` | 套件元件 |
| `architecture` | 套件架構 |
使用 HTTP 基本身份驗證的例請求:
使用 HTTP 基本身份驗證的例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/debian/pools/bionic/main/test-package/1.0.0/amd64
```
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到軟體包或文件 |
| `404 Not Found` | 找不到套件或文件 |
## 安裝軟體包
## 安裝套件
Debian 註冊表安裝軟體包,請執行以下命令:
Debian 註冊表安裝套件,請執行以下命令:
```shell
# use latest version
@@ -4,18 +4,18 @@ slug: "generic"
sidebar_position: 500
---
# 通用軟體包註冊表
# 通用套件註冊表
發佈通用文件,如發佈二進制文件或其他出,供您的使用者或組織使用。
發佈通用文件,如發佈二進制文件或其他出,供您的使用者或組織使用。
## 身份驗證軟體包註冊表
## 身份驗證套件註冊表
要身份驗證軟體包註冊表,您需要提供[定义 HTTP 或使用 HTTP 基本身份驗證](development/api-usage.md#過-api-認證)。
要身份驗證套件註冊表,您需要提供[ HTTP 或使用 HTTP 基本身份驗證](development/api-usage.md#過-api-認證)。
## 發佈軟體包
## 發佈套件
要發佈通用軟體包,請執行 HTTP `PUT` 操作,並将軟體包内容放入請求主體中。
您無法向軟體包中多次發佈具有相同名稱的文件。您必須首先除現有的軟體包版本。
要發佈通用套件,請執行 HTTP `PUT` 操作,並將套件內容放入請求主體中。
您無法向套件中多次發佈具有相同名稱的文件。您必須首先除現有的套件版本。
```
PUT https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
@@ -23,12 +23,12 @@ PUT https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{packa
| 參數 | 描述 |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 軟體包的所有者。 |
| `package_name` | 軟體包名稱。它只能包含小字母 (`a-z`)、大字母 (`A-Z`)、字 (`0-9`)、点号 (`.`)、字符 (`-`)、加 (`+`) 或下划线 (`_`) |
| `package_version` | 軟體包版本,一非空字符串,不包含前或尾空格 |
| `file_name` | 文件名。它只能包含小字母 (`a-z`)、大字母 (`A-Z`)、字 (`0-9`)、点号 (`.`)、字符 (`-`)、加 (`+`) 或下划线 (`_`) |
| `owner` | 套件的所有者。 |
| `package_name` | 套件名稱。它只能包含小字母 (`a-z`)、大字母 (`A-Z`)、字 (`0-9`)、點號 (`.`)、字符 (`-`)、加 (`+`) 或下劃線 (`_`) |
| `package_version` | 套件版本,一非空字符串,不包含前或尾空格 |
| `file_name` | 文件名。它只能包含小字母 (`a-z`)、大字母 (`A-Z`)、字 (`0-9`)、點號 (`.`)、字符 (`-`)、加 (`+`) 或下劃線 (`_`) |
使用 HTTP 基本身份驗證的例請求:
使用 HTTP 基本身份驗證的例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -36,19 +36,19 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼。
如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼。
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
| HTTP 状态码 | 意 |
| HTTP 狀態碼 | 意 |
| ----------------- | ---------------------------------- |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包名稱和/或版本和/或文件名無效 |
| `409 Conflict` | 具有相同名稱的文件已存在于軟體包中 |
| `201 Created` | 套件已發佈 |
| `400 Bad Request` | 套件名稱和/或版本和/或文件名無效 |
| `409 Conflict` | 具有相同名稱的文件已存在於套件中 |
## 下载軟體包
## 下載套件
要下通用軟體包,請執行 HTTP `GET` 操作。
要下通用套件,請執行 HTTP `GET` 操作。
```
GET https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{file_name}
@@ -56,30 +56,30 @@ GET https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{packa
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
| `file_name` | 文件名 |
文件内容将在響應主體中返回。響應的容類型為 `application/octet-stream`
文件內容將在響應主體中返回。響應的容類型為 `application/octet-stream`
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
```shell
curl --user your_username:your_token_or_password \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
服务器会以以下 HTTP 状态码進行響應:
伺服器會以以下 HTTP 狀態碼進行響應:
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| --------------- | -------------------- |
| `200 OK` | 成功 |
| `404 Not Found` | 找不到軟體包或者文件 |
| `404 Not Found` | 找不到套件或者文件 |
## 删除軟體包
## 刪除套件
除通用軟體包,請執行 HTTP DELETE 操作。这将同时删除該版本的所有文件。
除通用套件,請執行 HTTP DELETE 操作。這將同時刪除該版本的所有文件。
```
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}
@@ -87,11 +87,11 @@ DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{pa
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
```shell
curl --user your_username:your_token_or_password -X DELETE \
@@ -100,14 +100,14 @@ curl --user your_username:your_token_or_password -X DELETE \
The server responds with the following HTTP Status codes.
| HTTP 状态码 | 意 |
| HTTP 狀態碼 | 意 |
| ---------------- | ------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到軟體包 |
| `404 Not Found` | 找不到套件 |
## 删除軟體包文件
## 刪除套件文件
除通用軟體包的文件,請執行 HTTP `DELETE` 操作。如果有文件留下,这将同时删除軟體包版本。
除通用套件的文件,請執行 HTTP `DELETE` 操作。如果有文件留下,這將同時刪除套件版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{package_version}/{filename}
@@ -115,21 +115,21 @@ DELETE https://gitea.example.com/api/packages/{owner}/generic/{package_name}/{pa
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
| `filename` | 文件名 |
使用 HTTP 基本身份驗證的例請求:
使用 HTTP 基本身份驗證的例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/generic/test_package/1.0.0/file.bin
```
服务器将使用以下 HTTP 状态代码進行響應:
伺服器將使用以下 HTTP 狀態程式碼進行響應:
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 找不到軟體包或文件 |
| `404 Not Found` | 找不到套件或文件 |
@@ -4,15 +4,15 @@ slug: "go"
sidebar_position: 45
---
# Go 軟體包註冊表
# Go 套件註冊表
為您的使用者或組織發佈 Go 軟體包
為您的使用者或組織發佈 Go 套件
## 發佈軟體包
## 發佈套件
要發佈 Go 軟體包,請執行 HTTP `PUT` 操作,並将軟體包内容放入請求主體中。
如果已存在相同名稱和版本的軟體包,您無法發佈軟體包。您必須首先除現有的軟體包
軟體包必須遵循[中的结构](https://go.dev/ref/mod#zip-files)。
要發佈 Go 套件,請執行 HTTP `PUT` 操作,並將套件內容放入請求主體中。
如果已存在相同名稱和版本的套件,您無法發佈套件。您必須首先除現有的套件
套件必須遵循[中的結構](https://go.dev/ref/mod#zip-files)。
```
PUT https://gitea.example.com/api/packages/{owner}/go/upload
@@ -20,9 +20,9 @@ PUT https://gitea.example.com/api/packages/{owner}/go/upload
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
要身份驗證到軟體包註冊表,您需要提供[定义 HTTP 或使用 HTTP 基本身份驗證](development/api-usage.md#過-api-認證)
要身份驗證到套件註冊表,您需要提供[ HTTP 或使用 HTTP 基本身份驗證](development/api-usage.md#過-api-認證)
```shell
curl --user your_username:your_password_or_token \
@@ -30,19 +30,19 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/go/upload
```
如果您使用的是 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。
如果您使用的是 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。
服务器将使用以下 HTTP 状态代码進行響應。
伺服器將使用以下 HTTP 狀態程式碼進行響應。
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ----------------- | -------------------------- |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包無效 |
| `409 Conflict` | 具有相同名稱的軟體包已存在 |
| `201 Created` | 套件已發佈 |
| `400 Bad Request` | 套件無效 |
| `409 Conflict` | 具有相同名稱的套件已存在 |
## 安裝軟體包
## 安裝套件
要安裝Go軟體包,請指示Go使用軟體包註冊表作為代理:
要安裝Go套件,請指示Go使用套件註冊表作為代理:
```shell
# 使用最新版本
@@ -55,10 +55,10 @@ GOPROXY=https://gitea.example.com/api/packages/{owner}/go go install {package_na
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
如果軟體包的所有者是私有的,需要[提供凭据](https://go.dev/ref/mod#private-module-proxy-auth)。
如果套件的所有者是私有的,需要[提供憑據](https://go.dev/ref/mod#private-module-proxy-auth)。
`GOPROXY` 环境变量的更多信息以及如何防止数据泄漏的信息,請[参阅文檔](https://go.dev/ref/mod#private-modules)。
`GOPROXY` 環境變量的更多資訊以及如何防止資料泄漏的資訊,請[參閱文件](https://go.dev/ref/mod#private-modules)。
@@ -10,17 +10,17 @@ sidebar_position: 50
## 要求
要使用 Helm Chart 註冊表,可以使用`curl` 或 [`helm cm-push`](https://github.com/chartmuseum/helm-push/) 插件之类的简單HTTP客端。
要使用 Helm Chart 註冊表,可以使用`curl` 或 [`helm cm-push`](https://github.com/chartmuseum/helm-push/) 外掛之類的簡單HTTP客端。
## 發佈軟體包
## 發佈套件
通過行以下命令發佈軟體包
通過行以下命令發佈套件
```shell
curl --user {username}:{password} -X POST --upload-file ./{chart_file}.tgz https://gitea.example.com/api/packages/{owner}/helm/api/charts
```
或者使用 `helm cm-push` 插件
或者使用 `helm cm-push` 外掛
```shell
helm repo add --username {username} --password {password} {repo} https://gitea.example.com/api/packages/{owner}/helm
@@ -29,15 +29,15 @@ helm cm-push ./{chart_file}.tgz {repo}
| 參數 | 描述 |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密碼。如果您使用的是2FA或OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。 |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密碼。如果您使用的是2FA或OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼進行身份驗證。 |
| `repo` | 存放庫名稱 |
| `chart_file` | Helm Chart 檔文件 |
| `owner` | 軟體包的所有者 |
| `chart_file` | Helm Chart 檔文件 |
| `owner` | 套件的所有者 |
## 安裝軟體包
## 安裝套件
註冊表中安裝Helm Chart,請執行以下命令:
註冊表中安裝Helm Chart,請執行以下命令:
```shell
helm repo add --username {username} --password {password} {repo} https://gitea.example.com/api/packages/{owner}/helm
@@ -47,9 +47,9 @@ helm install {name} {repo}/{chart}
| 參數 | 描述 |
| ---------- | --------------------------- |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密碼或个人访问令牌 |
| `repo` | 存儲库的名稱 |
| `owner` | 軟體包的所有者 |
| `username` | 您的Gitea使用者名 |
| `password` | 您的Gitea密碼或個人存取權杖 |
| `repo` | 儲存庫的名稱 |
| `owner` | 套件的所有者 |
| `name` | 本地名稱 |
| `chart` | Helm Chart的名稱 |
@@ -4,18 +4,18 @@ slug: "maven"
sidebar_position: 60
---
# Maven 軟體包註冊表
# Maven 套件註冊表
為您的使用者或組織發佈 [Maven](https://maven.apache.org) 軟體包
為您的使用者或組織發佈 [Maven](https://maven.apache.org) 套件
## 要求
要使用 Maven 軟體包註冊表,您可以使用 [Maven](https://maven.apache.org/install.html) 或 [Gradle](https://gradle.org/install/)。
以下例使用 `Maven``Gradle Groovy`
要使用 Maven 套件註冊表,您可以使用 [Maven](https://maven.apache.org/install.html) 或 [Gradle](https://gradle.org/install/)。
以下例使用 `Maven``Gradle Groovy`
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,首先需要将访问令牌添加到 [`settings.xml`](https://maven.apache.org/settings.html) 文件中:
註冊套件註冊表,首先需要將存取權杖添加到 [`settings.xml`](https://maven.apache.org/settings.html) 文件中:
```xml
<settings>
@@ -35,7 +35,7 @@ sidebar_position: 60
</settings>
```
后在项目`pom.xml` 文件中添加以下部分:
後在專案`pom.xml` 文件中添加以下部分:
```xml
<repositories>
@@ -58,12 +58,12 @@ sidebar_position: 60
| 參數 | 描述 |
| -------------- | ------------------------------------------------------------------------------------- |
| `access_token` | 您的[个人访问令牌](development/api-usage.md#過-api-認證) |
| `owner` | 軟體包的所有者 |
| `access_token` | 您的[個人存取權杖](development/api-usage.md#過-api-認證) |
| `owner` | 套件的所有者 |
### Gradle variant
如果您计划在项目中添加自 Gitea 例的一些軟體包,請其添加到 repositories 部分中:
如果您計劃在專案中添加自 Gitea 例的一些套件,請其添加到 repositories 部分中:
```groovy
repositories {
@@ -72,11 +72,11 @@ repositories {
}
```
在 Groovy gradle 中,您可以在發佈部分中包含以下本:
在 Groovy gradle 中,您可以在發佈部分中包含以下本:
```groovy
publishing {
// 其他發佈
// 其他發佈
repositories {
maven {
name = "Gitea"
@@ -95,21 +95,21 @@ publishing {
}
```
## 發佈軟體包
## 發佈套件
要發佈軟體包,只需行以下命令:
要發佈套件,只需行以下命令:
```shell
mvn deploy
```
或者,如果您使用的是 Gradle,請使用 `gradle` 命令和 `publishAllPublicationsToGiteaRepository`
或者,如果您使用的是 Gradle,請使用 `gradle` 命令和 `publishAllPublicationsToGiteaRepository`
```groovy
./gradlew publishAllPublicationsToGiteaRepository
```
如果您想要将预构建的軟體包發佈到註冊表中,可以使用 [`mvn deploy:deploy-file`](https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html) 命令:
如果您想要將預構建的套件發佈到註冊表中,可以使用 [`mvn deploy:deploy-file`](https://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html) 命令:
```shell
mvn deploy:deploy-file -Durl=https://gitea.example.com/api/packages/{owner}/maven -DrepositoryId=gitea -Dfile=/path/to/package.jar
@@ -117,13 +117,13 @@ mvn deploy:deploy-file -Durl=https://gitea.example.com/api/packages/{owner}/mave
| 參數 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
如果存在相同名稱和版本的軟體包,您無法發佈該軟體包。您必須先除現有的軟體包
如果存在相同名稱和版本的套件,您無法發佈該套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝 Maven 軟體包,請在项目`pom.xml` 文件中添加新的依赖项
從套件註冊表中安裝 Maven 套件,請在專案`pom.xml` 文件中添加新的依賴項
```xml
<dependency>
@@ -133,19 +133,19 @@ mvn deploy:deploy-file -Durl=https://gitea.example.com/api/packages/{owner}/mave
</dependency>
```
`Gradle Groovy`似的操作如下:
`Gradle Groovy`似的操作如下:
```groovy
implementation "com.test.package:test_project:1.0.0"
```
后运行:
後運行:
```shell
mvn install
```
## 支的命令
## 支的命令
```
mvn install
@@ -10,15 +10,15 @@ sidebar_position: 70
## 要求
要使用 npm 包註冊表,您需要安裝 [Node.js](https://nodejs.org/en/download/) 以及之配套的軟體包管理器,例如 [Yarn](https://classic.yarnpkg.com/en/docs/install) 或 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) 本身。
要使用 npm 包註冊表,您需要安裝 [Node.js](https://nodejs.org/en/download/) 以及之配套的套件管理器,例如 [Yarn](https://classic.yarnpkg.com/en/docs/install) 或 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) 本身。
該註冊表支[作用域](https://docs.npmjs.com/misc/scope/)和非作用域軟體包
該註冊表支[作用域](https://docs.npmjs.com/misc/scope/)和非作用域套件
以下例使用具有作用域 `@test``npm` 工具。
以下例使用具有作用域 `@test``npm` 工具。
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要配置一个新的軟體包源。
註冊套件註冊表,您需要設定一個新的套件源。
```shell
npm config set {scope}:registry=https://gitea.example.com/api/packages/{owner}/npm/
@@ -27,9 +27,9 @@ npm config set -- '//gitea.example.com/api/packages/{owner}/npm/:_authToken' "{t
| 參數 | 描述 |
| ------- | --------------------------------------------------------------------------------------- |
| `scope` | 軟體包的作用域 |
| `owner` | 軟體包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#過-api-認證)。 |
| `scope` | 套件的作用域 |
| `owner` | 套件的所有者 |
| `token` | 您的[個人存取權杖](development/api-usage.md#過-api-認證)。 |
例如:
@@ -45,19 +45,19 @@ npm config set registry https://gitea.example.com/api/packages/testuser/npm/
npm config set -- '//gitea.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"
```
## 發佈軟體包
## 發佈套件
项目中运行以下命令發佈軟體包
專案中運行以下命令發佈套件
```shell
npm publish
```
如果已存在相同名稱和版本的軟體包,您無法發佈該軟體包。您必須先除現有的軟體包
如果已存在相同名稱和版本的套件,您無法發佈該套件。您必須先除現有的套件
## 删除軟體包
## 刪除套件
通過行以下命令删除軟體包
通過行以下命令刪除套件
```shell
npm unpublish {package_name}[@{package_version}]
@@ -65,8 +65,8 @@ npm unpublish {package_name}[@{package_version}]
| 參數 | 描述 |
| ----------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
例如
@@ -75,9 +75,9 @@ npm unpublish @test/test_package
npm unpublish @test/test_package@1.0.0
```
## 安裝軟體包
## 安裝套件
从軟體包註冊表中安裝軟體包,請執行以下命令:
從套件註冊表中安裝套件,請執行以下命令:
```shell
npm install {package_name}
@@ -85,7 +85,7 @@ npm install {package_name}
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `package_name` | 套件名稱 |
例如:
@@ -93,9 +93,9 @@ npm install {package_name}
npm install @test/test_package
```
## 给軟體包打標籤
## 給套件打標籤
該註冊表支[版本標籤](https://docs.npmjs.com/adding-dist-tags-to-packages/),可以`npm dist-tag` 管理:
該註冊表支[版本標籤](https://docs.npmjs.com/adding-dist-tags-to-packages/),可以`npm dist-tag` 管理:
```shell
npm dist-tag add {package_name}@{version} {tag}
@@ -103,9 +103,9 @@ npm dist-tag add {package_name}@{version} {tag}
| 參數 | 描述 |
| -------------- | ---------- |
| `package_name` | 軟體包名稱 |
| `version` | 軟體包版本 |
| `tag` | 軟體包標籤 |
| `package_name` | 套件名稱 |
| `version` | 套件版本 |
| `tag` | 套件標籤 |
例如:
@@ -113,13 +113,13 @@ npm dist-tag add {package_name}@{version} {tag}
npm dist-tag add test_package@1.0.2 release
```
標籤名稱不能是有效的版本。所有可解析為版本的標籤名稱都被拒
標籤名稱不能是有效的版本。所有可解析為版本的標籤名稱都被拒
## 搜索軟體包
## 搜索套件
該註冊表支[搜索](https://docs.npmjs.com/cli/v7/commands/npm-search/),但不支`author:gitea` 这样的特殊搜索限定符。
該註冊表支[搜索](https://docs.npmjs.com/cli/v7/commands/npm-search/),但不支`author:gitea` 這樣的特殊搜索限定符。
## 支的命令
## 支的命令
```
npm install
@@ -4,18 +4,18 @@ slug: "nuget"
sidebar_position: 80
---
# NuGet 軟體包註冊表
# NuGet 套件註冊表
發佈适用于您的使用者或組織的 [NuGet](https://www.nuget.org/) 軟體包。軟體包註冊表支 V2 和 V3 API 协议,並且您還可以使用 [NuGet 符号軟體包](https://docs.microsoft.com/zh-tw/nuget/create-packages/symbol-packages-snupkg)。
發佈適用於您的使用者或組織的 [NuGet](https://www.nuget.org/) 套件。套件註冊表支 V2 和 V3 API 協議,並且您還可以使用 [NuGet 符號套件](https://docs.microsoft.com/zh-tw/nuget/create-packages/symbol-packages-snupkg)。
## 要求
要使用 NuGet 軟體包註冊表,您可以使用命令行面工具,以及各种集成开发环境(IDE)中的 NuGet 功能,如 Visual Studio。有 NuGet 客端的更多信息,請[官方文](https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools)。
以下例使用 `dotnet nuget` 工具。
要使用 NuGet 套件註冊表,您可以使用命令行面工具,以及各種整合開發環境(IDE)中的 NuGet 功能,如 Visual Studio。有 NuGet 客端的更多資訊,請[官方文](https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools)。
以下例使用 `dotnet nuget` 工具。
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要配置一个新的 NuGet 源:
註冊套件註冊表,您需要設定一個新的 NuGet 源:
```shell
dotnet nuget add source --name {source_name} --username {username} --password {password} https://gitea.example.com/api/packages/{owner}/nuget/index.json
@@ -24,9 +24,9 @@ dotnet nuget add source --name {source_name} --username {username} --password {p
| 參數 | 描述 |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| `source_name` | 所需源名稱 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)代替密碼。 |
| `owner` | 軟體包的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)代替密碼。 |
| `owner` | 套件的所有者 |
例如:
@@ -34,11 +34,11 @@ dotnet nuget add source --name {source_name} --username {username} --password {p
dotnet nuget add source --name gitea --username testuser --password password123 https://gitea.example.com/api/packages/testuser/nuget/index.json
```
您可以在不提供凭据的情下添加源,並在發佈軟體包时使用--api-key 參數。在这种情况下,您需要提供[个人访问令牌](development/api-usage.md#過-api-認證)。
您可以在不提供憑據的情下添加源,並在發佈套件時使用--api-key 參數。在這種情況下,您需要提供[個人存取權杖](development/api-usage.md#過-api-認證)。
## 發佈軟體包
## 發佈套件
通過行以下命令發佈軟體包
通過行以下命令發佈套件
```shell
dotnet nuget push --source {source_name} {package_file}
@@ -47,7 +47,7 @@ dotnet nuget push --source {source_name} {package_file}
| 參數 | 描述 |
| -------------- | ---------------------------- |
| `source_name` | 所需源名稱 |
| `package_file` | 軟體包 `.nupkg` 文件的路。 |
| `package_file` | 套件 `.nupkg` 文件的路。 |
例如:
@@ -55,12 +55,12 @@ dotnet nuget push --source {source_name} {package_file}
dotnet nuget push --source gitea test_package.1.0.0.nupkg
```
如果已存在相同名稱和版本的軟體包,您無法發佈該軟體包。您必須先除現有的軟體包
如果已存在相同名稱和版本的套件,您無法發佈該套件。您必須先除現有的套件
### 符号軟體包
### 符號套件
NuGet 軟體包註冊表支持构建用于符号服务器的符号軟體包。客端可以請求嵌入在符号軟體包`.snupkg`)中的 PDB 文件。
為此,請 NuGet 軟體包註冊表注册為符源:
NuGet 套件註冊表支援構建用於符號伺服器的符號套件。客端可以請求嵌入在符號套件`.snupkg`)中的 PDB 文件。
為此,請 NuGet 套件註冊表註冊為符源:
```
https://gitea.example.com/api/packages/{owner}/nuget/symbols
@@ -68,7 +68,7 @@ https://gitea.example.com/api/packages/{owner}/nuget/symbols
| 參數 | 描述 |
| ------- | -------------------- |
| `owner` | 軟體包註冊表的所有者 |
| `owner` | 套件註冊表的所有者 |
例如:
@@ -76,9 +76,9 @@ https://gitea.example.com/api/packages/{owner}/nuget/symbols
https://gitea.example.com/api/packages/testuser/nuget/symbols
```
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝 NuGet 軟體包,請執行以下命令:
從套件註冊表安裝 NuGet 套件,請執行以下命令:
```shell
dotnet add package --source {source_name} --version {package_version} {package_name}
@@ -87,8 +87,8 @@ dotnet add package --source {source_name} --version {package_version} {package_n
| 參數 | 描述 |
| ----------------- | ------------ |
| `source_name` | 所需源名稱 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本。 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本。 |
例如:
@@ -96,7 +96,7 @@ dotnet add package --source {source_name} --version {package_version} {package_n
dotnet add package --source gitea --version 1.0.0 test_package
```
## 支的命令
## 支的命令
```
dotnet add
@@ -4,13 +4,13 @@ slug: "overview"
sidebar_position: 1
---
# 軟體包註冊表
# 套件註冊表
Gitea **1.17**版本始,軟體包註冊表可以用作常见軟體包管理器的公共或私有註冊表。
Gitea **1.17**版本始,套件註冊表可以用作常見套件管理器的公共或私有註冊表。
## 支持的軟體包管理器
## 支援的套件管理器
目前支以下軟體包管理器:
目前支以下套件管理器:
| Name | Language | Package client |
| ------------------------------------------------------------------- | ---------- | ------------------------- |
@@ -20,12 +20,12 @@ sidebar_position: 1
| [Composer](usage/packages/composer.md) | PHP | `composer` |
| [Conan](usage/packages/conan.md) | C++ | `conan` |
| [Conda](usage/packages/conda.md) | - | `conda` |
| [Container](usage/packages/container.md) | - | 任何符合OCI规范的客端 |
| [Container](usage/packages/container.md) | - | 任何符合OCI規範的客端 |
| [CRAN](usage/packages/cran.md) | R | - |
| [Debian](usage/packages/debian.md) | - | `apt` |
| [Generic](usage/packages/generic.md) | - | 任何HTTP客端 |
| [Generic](usage/packages/generic.md) | - | 任何HTTP客端 |
| [Go](usage/packages/go.md) | Go | `go` |
| [Helm](usage/packages/helm.md) | - | 任何HTTP客端, `cm-push` |
| [Helm](usage/packages/helm.md) | - | 任何HTTP客端, `cm-push` |
| [Maven](usage/packages/maven.md) | Java | `mvn`, `gradle` |
| [npm](usage/packages/npm.md) | JavaScript | `npm`, `yarn`, `pnpm` |
| [NuGet](usage/packages/nuget.md) | .NET | `nuget` |
@@ -36,61 +36,61 @@ sidebar_position: 1
| [Swift](usage/packages/rubygems.md) | Swift | `swift` |
| [Vagrant](usage/packages/vagrant.md) | - | `vagrant` |
**以下段落僅适用于未全禁用軟體包的情**
**以下段落僅適用於未全禁用套件的情**
## 存放庫 x 軟體包
## 存放庫 x 套件
軟體包始终属于所有者(使用者或組織),而不是存放庫。
(已上的)軟體包链接到存放庫,請打开該軟體包的设置页面,並選择要将此軟體包链接到的存放庫。
将链接到整个軟體包,而不僅是單版本。
套件始終屬於所有者(使用者或組織),而不是存放庫。
(已上的)套件鏈接到存放庫,請打開該套件的設定頁面,並選擇要將此套件鏈接到的存放庫。
將鏈接到整個套件,而不僅是單版本。
链接軟體包将导致在存放庫的軟體包列表中示該軟體包,並在軟體包页面上示到存放庫的接(以及到存放庫工單的接)。
鏈接套件將導致在存放庫的套件列表中示該套件,並在套件頁面上示到存放庫的接(以及到存放庫工單的接)。
## 访问限制
## 訪問限制
| 軟體包所有者類型 | 使用者 | 組織 |
| 套件所有者類型 | 使用者 | 組織 |
| ---------------- | ---------------------------------------- | ------------------------------------------ |
| **** 访问 | 公,如果使用者也是公的;否僅限此使用者 | 公,如果組織是公的,否僅限組織成 |
| **** 访问 | 僅軟體包所有者 | 具有組織中的管理员或写入访问权限的組織成 |
| **** 訪問 | 公,如果使用者也是公的;否僅限此使用者 | 公,如果組織是公的,否僅限組織成 |
| **** 訪問 | 僅套件所有者 | 具有組織中的管理員或寫入存取權限的組織成 |
注意:这些访问限制可能[](https://github.com/go-gitea/gitea/issues/19270)通過专门的組織团队权限添加更粒度的控制。
注意:這些訪問限制可能[](https://github.com/go-gitea/gitea/issues/19270)通過專門的組織團隊權限添加更粒度的控制。
## 建立或上传軟體包
## 建立或上傳套件
据軟體包類型,使用相應的軟體包管理器。請查看特定軟體包管理器的子面以获取说明。
據套件類型,使用相應的套件管理器。請查看特定套件管理器的子面以獲取說明。
## 查看軟體包
## 查看套件
您可以在存放庫面上查看存放庫的軟體包
您可以在存放庫面上查看存放庫的套件
1. 到存放庫主
2. 在导航栏中選**軟體包**
1. 到存放庫主
2. 在導航欄中選**套件**
要查看有关軟體包的更多详细信息,請選择軟體包的名稱。
要查看有關套件的更多詳細資訊,請選擇套件的名稱。
## 下载軟體包
## 下載套件
存放庫下载軟體包
存放庫下載套件
1. 在导航栏中選**軟體包**
2. 選择軟體包的名稱以查看详细信息
3. 在 **Assets** 部分,選要下载的軟體包文件的名稱。
1. 在導航欄中選**套件**
2. 選擇套件的名稱以查看詳細資訊
3. 在 **Assets** 部分,選要下載的套件文件的名稱。
## 删除軟體包
## 刪除套件
将軟體包發佈到軟體包註冊表,您無法编辑軟體包。相反,您必須除並重新建立它。
將套件發佈到套件註冊表,您無法編輯套件。相反,您必須除並重新建立它。
存放庫中删除軟體包
存放庫中刪除套件
1. 在导航栏中選**軟體包**
2. 選择軟體包的名稱以查看详细信息
3. 單擊**删除軟體包**以永久删除軟體包
1. 在導航欄中選**套件**
2. 選擇套件的名稱以查看詳細資訊
3. 單擊**刪除套件**以永久刪除套件
## 禁用軟體包註冊表
## 禁用套件註冊表
包註冊表已自动启用。要在單个存儲库中禁用它:
包註冊表已自動啟用。要在單個儲存庫中禁用它:
1. 在导航栏中選**设置**。
2. 禁用**用存放庫軟體包註冊表**.
1. 在導航欄中選**設定**。
2. 禁用**用存放庫套件註冊表**.
禁用軟體包註冊表不会删除先前發佈的軟體包
禁用套件註冊表不會刪除先前發佈的套件
@@ -4,53 +4,53 @@ slug: "pub"
sidebar_position: 90
---
# Pub 軟體包註冊表
# Pub 套件註冊表
為您的使用者或組織發佈 [Pub](https://dart.dev/guides/packages) 軟體包
為您的使用者或組織發佈 [Pub](https://dart.dev/guides/packages) 套件
## 要求
要使用Pub軟體包註冊表,您需要使用 [dart](https://dart.dev/tools/dart-tool) 和/或 [flutter](https://docs.flutter.dev/reference/flutter-cli). 工具。
要使用Pub套件註冊表,您需要使用 [dart](https://dart.dev/tools/dart-tool) 和/或 [flutter](https://docs.flutter.dev/reference/flutter-cli). 工具。
以下例使用 `dart`
以下例使用 `dart`
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表並提供凭据,請執行以下操作:
註冊套件註冊表並提供憑據,請執行以下操作:
```shell
dart pub token add https://gitea.example.com/api/packages/{owner}/pub
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
您需要提供您的[个人访问令牌](development/api-usage.md#過-api-認證)。
您需要提供您的[個人存取權杖](development/api-usage.md#過-api-認證)。
## 發佈軟體包
## 發佈套件
要發佈軟體包,請编辑 `pubspec.yaml` 文件,並添加以下行:
要發佈套件,請編輯 `pubspec.yaml` 文件,並添加以下行:
```yaml
publish_to: https://gitea.example.com/api/packages/{owner}/pub
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------- | -------------- |
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
現在,您可以通過运行以下命令發佈軟體包
現在,您可以透過運行以下命令發佈套件
```shell
dart pub publish
```
如果已存在具有相同名稱和版本的軟體包,则無法發佈軟體包。您必須先除現有的軟體包
如果已存在具有相同名稱和版本的套件,則無法發佈套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝Pub軟體包,請執行以下命令:
從套件註冊表安裝Pub套件,請執行以下命令:
```shell
dart pub add {package_name} --hosted-url=https://gitea.example.com/api/packages/{owner}/pub/
@@ -58,8 +58,8 @@ dart pub add {package_name} --hosted-url=https://gitea.example.com/api/packages/
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
例如:
@@ -4,17 +4,17 @@ slug: "pypi"
sidebar_position: 100
---
# PyPI 軟體包註冊表
# PyPI 套件註冊表
為您的使用者或組織發佈 [PyPI](https://pypi.org/) 軟體包
為您的使用者或組織發佈 [PyPI](https://pypi.org/) 套件
## 要求
要使用 PyPI 軟體包註冊表,您需要使用 [pip](https://pypi.org/project/pip/) 工具来消费和使用 [twine](https://pypi.org/project/twine/) 工具發佈軟體包
要使用 PyPI 套件註冊表,您需要使用 [pip](https://pypi.org/project/pip/) 工具來消費和使用 [twine](https://pypi.org/project/twine/) 工具發佈套件
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,您需要编辑本地的 `~/.pypirc` 文件。添加以下容:
註冊套件註冊表,您需要編輯本地的 `~/.pypirc` 文件。添加以下容:
```ini
[distutils]
@@ -26,27 +26,27 @@ username = {username}
password = {password}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 軟體包的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼 |
| `owner` | 套件的所有者 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼。如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼 |
## 發佈軟體包
## 發佈套件
通過行以下命令發佈軟體包
通過行以下命令發佈套件
```shell
python3 -m twine upload --repository gitea /path/to/files/*
```
軟體包文件的展名為 `.tar.gz``.whl`
套件文件的展名為 `.tar.gz``.whl`
如果已存在具有相同名稱和版本的軟體包,则無法發佈軟體包。您必須先除現有的軟體包
如果已存在具有相同名稱和版本的套件,則無法發佈套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝 PyPI 軟體包,請執行以下命令:
從套件註冊表安裝 PyPI 套件,請執行以下命令:
```shell
pip install --index-url https://{username}:{password}@gitea.example.com/api/packages/{owner}/pypi/simple --no-deps {package_name}
@@ -54,10 +54,10 @@ pip install --index-url https://{username}:{password}@gitea.example.com/api/pack
| 參數 | 描述 |
| -------------- | ----------------------------- |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼或个人访问令牌 |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `username` | 您的 Gitea 使用者名 |
| `password` | 您的 Gitea 密碼或個人存取權杖 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
例如:
@@ -65,9 +65,9 @@ pip install --index-url https://{username}:{password}@gitea.example.com/api/pack
pip install --index-url https://testuser:password123@gitea.example.com/api/packages/testuser/pypi/simple --no-deps test_package
```
您可以使用 `--extra-index-url` 替代 `--index-url`,但这样会使您容易受到依混淆攻擊,因為 `pip` 会先检查官方 PyPi 存放庫中的軟體包,然后再检查指定的自定义存放庫。請阅读 `pip`檔以获取更多信息
您可以使用 `--extra-index-url` 替代 `--index-url`,但這樣會使您容易受到依混淆攻擊,因為 `pip` 會先檢查官方 PyPi 存放庫中的套件,然後再檢查指定的自存放庫。請閱讀 `pip`件以獲取更多資訊
## 支的命令
## 支的命令
```
pip install
@@ -4,40 +4,40 @@ slug: "packages/rpm"
sidebar_position: 105
---
# RPM 軟體包註冊表
# RPM 套件註冊表
為您的使用者或組織發佈 [RPM](https://rpm.org/) 軟體包
為您的使用者或組織發佈 [RPM](https://rpm.org/) 套件
## 要求
要使用RPM註冊表,您需要使用像 `yum`, `dnf``zypper` 这样的軟體包管理器来消费軟體包
要使用RPM註冊表,您需要使用像 `yum`, `dnf``zypper` 這樣的套件管理器來消費套件
以下例使用 `dnf`
以下例使用 `dnf`
## 配置軟體包註冊表
## 設定套件註冊表
注册RPM註冊表,請 URL 添加到已知 `apt` 源列表中:
註冊RPM註冊表,請 URL 添加到已知 `apt` 源列表中:
```shell
dnf config-manager --add-repo https://gitea.example.com/api/packages/{owner}/rpm/{group}.repo
```
| 位符 | 描述 |
| 位符 | 描述 |
| ------- |--------------------------------------|
| `owner` | 軟體包的所有者 |
| `owner` | 套件的所有者 |
| `group` | 任何名稱,例如 `centos/7``el-7``fc38` |
如果註冊表是私有的,請在URL中提供凭据。您可以使用密碼或[个人访问令牌](development/api-usage.md#過-api-認證)
如果註冊表是私有的,請在URL中提供憑據。您可以使用密碼或[個人存取權杖](development/api-usage.md#過-api-認證)
```shell
dnf config-manager --add-repo https://{username}:{your_password_or_token}@gitea.example.com/api/packages/{owner}/rpm/{group}.repo
```
您還必須将凭据添加到 `/etc/yum.repos.d` 中的 `rpm.repo` 文件中的URL中。
您還必須將憑據添加到 `/etc/yum.repos.d` 中的 `rpm.repo` 文件中的URL中。
## 發佈軟體包
## 發佈套件
要發佈RPM軟體包`*.rpm`),請執行带有軟體包内容的 HTTP `PUT` 操作。
要發佈RPM套件`*.rpm`),請執行帶有套件內容的 HTTP `PUT` 操作。
```
PUT https://gitea.example.com/api/packages/{owner}/rpm/{group}/upload
@@ -45,10 +45,10 @@ PUT https://gitea.example.com/api/packages/{owner}/rpm/{group}/upload
| 參數 | 描述 |
| ------- |--------------|
| `owner` | 軟體包的所有者 |
| `group` | 軟體包自定义分组名稱 |
| `owner` | 套件的所有者 |
| `group` | 套件自訂分組名稱 |
使用HTTP基本身份驗證的例請求:
使用HTTP基本身份驗證的例請求:
```shell
curl --user your_username:your_password_or_token \
@@ -56,19 +56,19 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/version/upload
```
如果您使用 2FA 或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)替代密碼。您無法具有相同名稱的文件次發佈到軟體包中。您必須先除現有的軟體包版本。
如果您使用 2FA 或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)替代密碼。您無法具有相同名稱的文件次發佈到套件中。您必須先除現有的套件版本。
服务器将以以下HTTP状态码響應。
伺服器將以以下HTTP狀態碼響應。
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ----------------- | ------------------------------------------------ |
| `201 Created` | 軟體包已發佈 |
| `400 Bad Request` | 軟體包無效 |
| `409 Conflict` | 具有相同參數合的軟體包文件已存在于該軟體包中 |
| `201 Created` | 套件已發佈 |
| `400 Bad Request` | 套件無效 |
| `409 Conflict` | 具有相同參數合的套件文件已存在於該套件中 |
## 删除軟體包
## 刪除套件
除 RPM 軟體包,請執行 HTTP `DELETE` 操作。如果有文件剩余,这也将删除軟體包版本。
除 RPM 套件,請執行 HTTP `DELETE` 操作。如果有文件剩餘,這也將刪除套件版本。
```
DELETE https://gitea.example.com/api/packages/{owner}/rpm/{group}/package/{package_name}/{package_version}/{architecture}
@@ -76,29 +76,29 @@ DELETE https://gitea.example.com/api/packages/{owner}/rpm/{group}/package/{packa
| 參數 | 描述 |
| ----------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `group` | 軟體包自定义分组 |
| `package_name` | 軟體包名稱 |
| `package_version` | 軟體包版本 |
| `architecture` | 軟體包架构 |
| `owner` | 套件的所有者 |
| `group` | 套件自訂分組 |
| `package_name` | 套件名稱 |
| `package_version` | 套件版本 |
| `architecture` | 套件架構 |
使用HTTP基本身份驗證的例請求:
使用HTTP基本身份驗證的例請求:
```shell
curl --user your_username:your_token_or_password -X DELETE \
https://gitea.example.com/api/packages/testuser/rpm/centos/el7/package/test-package/1.0.0/x86_64
```
服务器将以以下HTTP状态码響應:
伺服器將以以下HTTP狀態碼響應:
| HTTP 状态码 | 含 |
| HTTP 狀態碼 | 含 |
| ---------------- | ------------------ |
| `204 No Content` | 成功 |
| `404 Not Found` | 未找到軟體包或文件 |
| `404 Not Found` | 未找到套件或文件 |
## 安裝軟體包
## 安裝套件
RPM註冊表安裝軟體包,請執行以下命令:
RPM註冊表安裝套件,請執行以下命令:
```shell
# use latest version
@@ -4,17 +4,17 @@ slug: "rubygems"
sidebar_position: 110
---
# RubyGems 軟體包註冊表
# RubyGems 套件註冊表
為您的使用者或組織發佈 [RubyGems](https://guides.rubygems.org/) 軟體包
為您的使用者或組織發佈 [RubyGems](https://guides.rubygems.org/) 套件
## 要求
要使用RubyGems軟體包註冊表,您需要使用 [gem](https://guides.rubygems.org/command-reference/) 命令行工具来消费和發佈軟體包
要使用RubyGems套件註冊表,您需要使用 [gem](https://guides.rubygems.org/command-reference/) 命令行工具來消費和發佈套件
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表,請编辑 `~/.gem/credentials` 文件並添加:
註冊套件註冊表,請編輯 `~/.gem/credentials` 文件並添加:
```ini
---
@@ -23,8 +23,8 @@ https://gitea.example.com/api/packages/{owner}/rubygems: Bearer {token}
| 參數 | 描述 |
| ------- | ------------------------------------------------------------------------------------- |
| `owner` | 軟體包的所有者 |
| `token` | 您的[个人访问令牌](development/api-usage.md#過-api-認證) |
| `owner` | 套件的所有者 |
| `token` | 您的[個人存取權杖](development/api-usage.md#過-api-認證) |
例如:
@@ -33,9 +33,9 @@ https://gitea.example.com/api/packages/{owner}/rubygems: Bearer {token}
https://gitea.example.com/api/packages/testuser/rubygems: Bearer 3bd626f84b01cd26b873931eace1e430a5773cc4
```
## 發佈軟體包
## 發佈套件
通過行以下命令發佈軟體包
通過行以下命令發佈套件
```shell
gem push --host {host} {package_file}
@@ -43,8 +43,8 @@ gem push --host {host} {package_file}
| 參數 | 描述 |
| -------------- | ------------------------ |
| `host` | 軟體包註冊表的URL |
| `package_file` | 軟體包 `.gem` 文件的路 |
| `host` | 套件註冊表的URL |
| `package_file` | 套件 `.gem` 文件的路 |
例如:
@@ -52,15 +52,15 @@ gem push --host {host} {package_file}
gem push --host https://gitea.example.com/api/packages/testuser/rubygems test_package-1.0.0.gem
```
如果已存在相同名稱和版本的軟體包,您無法發佈軟體包。您必須先除現有的軟體包
如果已存在相同名稱和版本的套件,您無法發佈套件。您必須先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝軟體包,您可以使用 [Bundler](https://bundler.io) 或 `gem`
從套件註冊表安裝套件,您可以使用 [Bundler](https://bundler.io) 或 `gem`
### Bundler
在您的 `Gemfile` 中添加一新的 `source`
在您的 `Gemfile` 中添加一新的 `source`
```
source "https://gitea.example.com/api/packages/{owner}/rubygems" do
@@ -70,8 +70,8 @@ end
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
例如:
@@ -81,7 +81,7 @@ source "https://gitea.example.com/api/packages/testuser/rubygems" do
end
```
后运行以下命令:
後運行以下命令:
```shell
bundle install
@@ -97,8 +97,8 @@ gem install --host https://gitea.example.com/api/packages/{owner}/rubygems {pack
| 參數 | 描述 |
| -------------- | -------------- |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包名稱 |
| `owner` | 套件的所有者 |
| `package_name` | 套件名稱 |
例如:
@@ -106,7 +106,7 @@ gem install --host https://gitea.example.com/api/packages/{owner}/rubygems {pack
gem install --host https://gitea.example.com/api/packages/testuser/rubygems test_package
```
## 支的命令
## 支的命令
```
gem install
@@ -4,69 +4,69 @@ slug: "storage"
sidebar_position: 5
---
#
# 儲
本文描述了軟體包註冊表的儲方式以及如何管理儲。
本文描述了套件註冊表的儲方式以及如何管理儲
## 去重
軟體包註冊表具有置的去重功能,可以对上传的 Blob 進行去重理。
如果上传了两个相同的文件,只在文件系上保存一 Blob。
这样可以保不会浪费空间用于重复的文件。
套件註冊表具有置的去重功能,可以對上傳的 Blob 進行去重理。
如果上傳了兩個相同的文件,只在文件系上保存一 Blob。
這樣可以保不會浪費空間用於重複的文件。
如果上传了两个具有相同文件的軟體包,这两个軟體包将显示相同的大小,但在文件系上,它只需要一半的大小。
当删除一个軟體包时,只会删除对底层 Blob 的引用。
Blob 不会被删除,因此它仍然用文件系上的空
当上传新的軟體包时,現有的 Blob 可能再次被引用。
如果上傳了兩個具有相同文件的套件,這兩個套件將顯示相同的大小,但在文件系上,它只需要一半的大小。
當刪除一個套件時,只會刪除對底層 Blob 的引用。
Blob 不會被刪除,因此它仍然用文件系上的空
當上傳新的套件時,現有的 Blob 可能再次被引用。
些無引用的 Blob 在一清理任中被除。
配置设置 `OLDER_THAN` 可以配置無引用的 Blob 在被除之前保留的时间
些無引用的 Blob 在一清理任中被除。
設定 `OLDER_THAN` 可以設定無引用的 Blob 在被除之前保留的時間
## 清理規則
軟體包註冊表可能会随着时间的推移而得很大,如果不進行清理的
议删除不必要的軟體包並设置清理規則以自管理軟體包註冊表的使用情
个軟體包所有者(使用者或組織)都可以管理應用于其軟體包的清理規則。
套件註冊表可能會隨著時間的推移而得很大,如果不進行清理的
議刪除不必要的套件並設定清理規則以自管理套件註冊表的使用情
個套件所有者(使用者或組織)都可以管理應用於其套件的清理規則。
| 设置 | 描述 |
| 設定 | 描述 |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| 用 | 打开或关闭清理規則。 |
| 類型 | 每規則管理特定的軟體包類型。 |
| 模式應用完整的軟體包名稱 | 如果用,應用以下模式到完整的軟體包名稱(`package/version`),否只使用版本`version`)。 |
| 保留最近的版本 | 對於每个軟體包要始保留的版本量。 |
| 保留以下模式匹配的版本 | 定要保留哪些版本的正则表达式模式。空模式表示不保留任何版本,而 `.+` 表示保留所有版本。即使未配置,容器註冊表也始保留 `latest` 版本。 |
| 除早多少天的版本 | 僅除早所選天的版本。 |
| 删除与以下模式匹配的版本 | 定要除哪些版本的正则表达式模式。空模式或 `.+` 表示如果有其他设置指定,则删除所有軟體包。 |
| 用 | 打開或關閉清理規則。 |
| 類型 | 每規則管理特定的套件類型。 |
| 模式應用完整的套件名稱 | 如果用,應用以下模式到完整的套件名稱(`package/version`),否只使用版本`version`)。 |
| 保留最近的版本 | 對於每個套件要始保留的版本量。 |
| 保留以下模式匹配的版本 | 定要保留哪些版本的正則表達式模式。空模式表示不保留任何版本,而 `.+` 表示保留所有版本。即使未設定,容器註冊表也始保留 `latest` 版本。 |
| 除早多少天的版本 | 僅除早所選天的版本。 |
| 刪除與以下模式匹配的版本 | 定要除哪些版本的正則表達式模式。空模式或 `.+` 表示如果有其他設定指定,則刪除所有套件。 |
清理規則都可以示受影響的軟體包的预览
可以用来检查清理規則是否正确配置
清理規則都可以示受影響的套件的預覽
可以用來檢查清理規則是否正確設定
### 正则表达式示
### 正則表達式範
则表达式模式会自动使用 `\A``\z` 锚点進行包
不要在正则表达式模式中包含任何 `\A``\z``^``$` 标记,因為它不是必要的。
模式是不分大小的, Gitea 中的軟體包註冊表的行為相匹配。
則表達式模式會自動使用 `\A``\z` 錨點進行包
不要在正則表達式模式中包含任何 `\A``\z``^``$` 標記,因為它不是必要的。
模式是不分大小的, Gitea 中的套件註冊表的行為相匹配。
| Pattern | Description |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `.*` | 匹配任何可能的版本。 |
| `v.+` | 匹配以 `v` 開頭的版本。 |
| `release` | 僅匹配版本`release`。 |
| `release` | 僅匹配版本`release`。 |
| `release.*` | 匹配以 `release` 命名或以 `release` 開頭的版本。 |
| `.+-temp-.+` | 匹配包含 `-temp-` 的版本。 |
| `v.+\|release` | 匹配以 `v` 開頭的版本或版本`release`。 |
| `package/v.+\|other/release` | 匹配以 `v` 開頭的 package 的版本或 `other` 的版本`release`。需要用*模式應用完整的軟體包名稱*设置。 |
| `v.+\|release` | 匹配以 `v` 開頭的版本或版本`release`。 |
| `package/v.+\|other/release` | 匹配以 `v` 開頭的 package 的版本或 `other` 的版本`release`。需要用*模式應用完整的套件名稱*設定。 |
### 清理規則的工作原理
清理規則是清理任的一部分,定期行。
清理規則是清理任的一部分,定期行。
清理規則:
1. 收集所有属于所有者註冊表的特定軟體包類型的軟體包
2. 對於每个軟體包,收集所有版本。
3. 根 *保留最近的版本* 的值,列表中排除版本。
4. 根 *保留以下模式匹配的版本* 的值,列表中排除任何版本。
5. 根 *除早多少天的版本* 的值,列表中排除比这个值更近的版本。
6. 根 *删除与以下模式匹配的版本* 的值,列表中排除任何不匹配的版本。
7. 除剩的版本。
1. 收集所有屬於所有者註冊表的特定套件類型的套件
2. 對於每個套件,收集所有版本。
3. 根 *保留最近的版本* 的值,列表中排除版本。
4. 根 *保留以下模式匹配的版本* 的值,列表中排除任何版本。
5. 根 *除早多少天的版本* 的值,列表中排除比這個值更近的版本。
6. 根 *刪除與以下模式匹配的版本* 的值,列表中排除任何不匹配的版本。
7. 除剩的版本。
@@ -4,39 +4,39 @@ slug: "swift"
sidebar_position: 115
---
# Swift 軟體包註冊表
# Swift 套件註冊表
為您的使用者或組織發佈 [Swift](https://www.swift.org/) 軟體包
為您的使用者或組織發佈 [Swift](https://www.swift.org/) 套件
## 要求
要使用 Swift 軟體包註冊表,您需要使用 [swift](https://www.swift.org/getting-started/) 消费軟體包,並使用 HTTP 客端(如 `curl`)發佈軟體包
要使用 Swift 套件註冊表,您需要使用 [swift](https://www.swift.org/getting-started/) 消費套件,並使用 HTTP 客端(如 `curl`)發佈套件
## 配置軟體包註冊表
## 設定套件註冊表
注册軟體包註冊表並提供凭据,請執行以下命令:
註冊套件註冊表並提供憑據,請執行以下命令:
```shell
swift package-registry set https://gitea.example.com/api/packages/{owner}/swift -login {username} -password {password}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `owner` | 軟體包的所有者。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用步驗證或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)代替密碼。 |
| `owner` | 套件的所有者。 |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用步驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)代替密碼。 |
登入是可選的,只有在軟體包註冊表是私有的情下才需要。
登入是可選的,只有在套件註冊表是私有的情下才需要。
## 發佈軟體包
## 發佈套件
首先,您需要打包軟體包的内容:
首先,您需要打包套件的內容:
```shell
swift package archive-source
```
要發佈軟體包,請執行一个带有軟體包内容的 HTTP `PUT` 請求,将内容放在請求正文中。
要發佈套件,請執行一個帶有套件內容的 HTTP `PUT` 請求,將內容放在請求正文中。
```shell --user your_username:your_password_or_token \
curl -X PUT --user {username}:{password} \
@@ -46,21 +46,21 @@ curl -X PUT --user {username}:{password} \
https://gitea.example.com/api/packages/{owner}/swift/{scope}/{name}/{version}
```
| 位符 | 描述 |
| 位符 | 描述 |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用步驗證或 OAuth,請使用[个人访问令牌](development/api-usage.md#過-api-認證)代替密碼。 |
| `owner` | 軟體包的所有者。 |
| `scope` | 軟體包的作用域。 |
| `name` | 軟體包的名稱。 |
| `version` | 軟體包的版本。 |
| `metadata` | (可選)軟體包的元数据。以 JSON 编码的子集,格式考 https://schema.org/SoftwareSourceCode |
| `username` | 您的 Gitea 使用者名。 |
| `password` | 您的 Gitea 密碼。如果您使用步驗證或 OAuth,請使用[個人存取權杖](development/api-usage.md#過-api-認證)代替密碼。 |
| `owner` | 套件的所有者。 |
| `scope` | 套件的作用域。 |
| `name` | 套件的名稱。 |
| `version` | 套件的版本。 |
| `metadata` | (可選)套件的元資料。以 JSON 編碼的子集,格式考 https://schema.org/SoftwareSourceCode |
如果已存在相同名稱和版本的軟體包,则無法發佈軟體包。您必須首先除現有的軟體包
如果已存在相同名稱和版本的套件,則無法發佈套件。您必須首先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝 Swift 軟體包,請其添加到 `Package.swift` 文件的依赖项列表中:
從套件註冊表安裝 Swift 套件,請其添加到 `Package.swift` 文件的依賴項列表中:
```
dependencies: [
@@ -70,11 +70,11 @@ dependencies: [
| 參數 | 描述 |
| --------- | -------------- |
| `scope` | 軟體包的作用域 |
| `name` | 軟體包的名稱 |
| `version` | 軟體包的版本 |
| `scope` | 套件的作用域 |
| `name` | 套件的名稱 |
| `version` | 套件的版本 |
,執行以下命令安裝它:
,執行以下命令安裝它:
```shell
swift package resolve
@@ -4,17 +4,17 @@ slug: "vagrant"
sidebar_position: 120
---
# Vagrant 軟體包註冊表
# Vagrant 套件註冊表
為您的使用者或組織發佈 [Vagrant](https://www.vagrantup.com/) 軟體包
為您的使用者或組織發佈 [Vagrant](https://www.vagrantup.com/) 套件
## 要求
要使用 Vagrant 軟體包註冊表,您需要安裝 [Vagrant](https://www.vagrantup.com/downloads) 並使用类似于 `curl` 的工具進行 HTTP 請求。
要使用 Vagrant 套件註冊表,您需要安裝 [Vagrant](https://www.vagrantup.com/downloads) 並使用類似於 `curl` 的工具進行 HTTP 請求。
## 發佈軟體包
## 發佈套件
過執行 HTTP PUT 請求 Vagrant box 發佈到註冊表:
過執行 HTTP PUT 請求 Vagrant box 發佈到註冊表:
```
PUT https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}/{package_version}/{provider}.box
@@ -22,12 +22,12 @@ PUT https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}/{packa
| 參數 | 描述 |
| ----------------- | ------------------------------------------------------------------ |
| `owner` | 軟體包的所有者 |
| `package_name` | 軟體包的名稱 |
| `package_version` | 軟體包的版本,容 semver 格式 |
| `provider` | [的提供程名稱](https://www.vagrantup.com/docs/providers)之一 |
| `owner` | 套件的所有者 |
| `package_name` | 套件的名稱 |
| `package_version` | 套件的版本,容 semver 格式 |
| `provider` | [的提供程名稱](https://www.vagrantup.com/docs/providers)之一 |
Hyper-V box 的例:
Hyper-V box 的例:
```shell
curl --user your_username:your_password_or_token \
@@ -35,11 +35,11 @@ curl --user your_username:your_password_or_token \
https://gitea.example.com/api/packages/testuser/vagrant/test_system/1.0.0/hyperv.box
```
如果已存在相同名稱、版本和提供程序的軟體包,则無法發佈軟體包。您必須首先除現有的軟體包
如果已存在相同名稱、版本和提供程式的套件,則無法發佈套件。您必須首先除現有的套件
## 安裝軟體包
## 安裝套件
从軟體包註冊表安裝軟體包,請執行以下命令:
從套件註冊表安裝套件,請執行以下命令:
```shell
vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package_name}"
@@ -47,8 +47,8 @@ vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package
| 參數 | 描述 |
| -------------- | --------------- |
| `owner` | 軟體包的所有者. |
| `package_name` | 軟體包的名稱 |
| `owner` | 套件的所有者. |
| `package_name` | 套件的名稱 |
例如:
@@ -56,10 +56,10 @@ vagrant box add "https://gitea.example.com/api/packages/{owner}/vagrant/{package
vagrant box add "https://gitea.example.com/api/packages/testuser/vagrant/test_system"
```
这将安裝軟體包的最新版本。要添加特定版本,請使用` --box-version` 參數。
如果註冊表是私有的,您可以您的[个人访问令牌](development/api-usage.md#過-api-認證)传递给 `VAGRANT_CLOUD_TOKEN` 环境变量。
這將安裝套件的最新版本。要添加特定版本,請使用` --box-version` 參數。
如果註冊表是私有的,您可以您的[個人存取權杖](development/api-usage.md#過-api-認證)傳遞給 `VAGRANT_CLOUD_TOKEN` 環境變量。
## 支的命令
## 支的命令
```
vagrant box add
@@ -6,72 +6,72 @@ aliases:
- /zh-tw/permissions
---
#
#
Gitea 支持对存放庫進行限管理,这样您就可以為不同的人提供不同的访问权限。首先,我需要了解 `單元(Unit`
Gitea 支援對存放庫進行限管理,這樣您就可以為不同的人提供不同的存取權限。首先,我需要了解 `單元(Unit`
## 單元(Unit
在 Gitea 中,我们将存放庫的子模組稱為 `單元(Unit`。現在我有以下几个單元。
在 Gitea 中,我們將存放庫的子模組稱為 `單元(Unit`。現在我有以下幾個單元。
| 名稱 | 描述 | 限 |
| 名稱 | 描述 | 限 |
| -------------- | ---------------------------------- | --------- |
| 代码 | 访问源代码、文件、提交和分支。 | 入 |
| 工單 | 組織缺陷告、任和里程碑。 | 入 |
| 合請求 | 用合請求和代码审核。 | 入 |
| 發佈 | 跟踪项目版本和下。 | 入 |
| 百科 | 与协作者编写和共享文。 | 入 |
| 外部百科 | 接到外部基。 | 取 |
| 外部工單跟器 | 接到外部工單跟器。 | 取 |
| 项目 | 模板存放庫的 URL。 | 入 |
| 包 | 接到存放庫 | 入 |
| Actions | 查 Actions 日或重/取消工作流 | 入 |
| 设置 | 管理存放庫。 | 管理 |
| 程式碼 | 訪問源程式碼、文件、提交和分支。 | 入 |
| 工單 | 組織缺陷告、任和里程碑。 | 入 |
| 合請求 | 用合請求和程式碼審覈。 | 入 |
| 發佈 | 跟蹤專案版本和下。 | 入 |
| 百科 | 與協作者編寫和共享文。 | 入 |
| 外部百科 | 接到外部基。 | 取 |
| 外部工單跟器 | 接到外部工單跟器。 | 取 |
| 專案 | 模板存放庫的 URL。 | 入 |
| 包 | 接到存放庫 | 入 |
| Actions | 查 Actions 日或重/取消工作流 | 入 |
| 設定 | 管理存放庫。 | 管理 |
通過不同的限,使用者可以在些單元上執行不同的操作。
通過不同的限,使用者可以在些單元上執行不同的操作。
| 名稱 | 取 | 入 | 管理 |
| 名稱 | 取 | 入 | 管理 |
| -------------- | -------------------------------- | ------------------------------ | -------- |
| 代码 | 查看代码树、文件、提交、分支等。 | 推送代码。 | - |
| 工單 | 查看工單並建立新工單。 | 添加標籤、分配、关闭工單。 | - |
| 合請求 | 查看合請求並建立新合請求。 | 添加標籤、分配、关闭合並請求。 | - |
| 發佈 | 查看發佈和下文件。 | 建立/编辑發佈。 | - |
| 百科 | 查看百科面。克隆百科存放庫。 | 建立/编辑百科面,推送更改。 | - |
| 外部百科 | 接到外部百科。 | - | - |
| 外部工單跟器 | 接到外部工單跟器。 | - | - |
| 项目 | 查看面板。 | 在面板之间移动工單。 | - |
| 包 | 查看包 | 上传/删除包 | - |
| Actions | 查看 Actions 日 | 同意 / 取消 / 重 | - |
| 设置 | - | - | 管理存放庫 |
| 程式碼 | 查看程式碼樹、文件、提交、分支等。 | 推送程式碼。 | - |
| 工單 | 查看工單並建立新工單。 | 添加標籤、分配、關閉工單。 | - |
| 合請求 | 查看合請求並建立新合請求。 | 添加標籤、分配、關閉合併請求。 | - |
| 發佈 | 查看發佈和下文件。 | 建立/編輯發佈。 | - |
| 百科 | 查看百科面。克隆百科存放庫。 | 建立/編輯百科面,推送更改。 | - |
| 外部百科 | 接到外部百科。 | - | - |
| 外部工單跟器 | 接到外部工單跟器。 | - | - |
| 專案 | 查看面板。 | 在面板之間移動工單。 | - |
| 包 | 查看包 | 上傳/刪除包 | - |
| Actions | 查看 Actions 日 | 同意 / 取消 / 重 | - |
| 設定 | - | - | 管理存放庫 |
人存放庫和組織存放庫之间的权限存在一些差
人存放庫和組織存放庫之間的權限存在一些差
## 人存放庫
## 人存放庫
對於人存放庫,建立者是存放庫的唯一所有者,對於該存放庫的任何更改或删除没有限制。
存放庫所有者可以添加作者来帮助维护存放庫。作者可以`取(Read``入(Write``管理Admin` 限。
對於人存放庫,建立者是存放庫的唯一所有者,對於該存放庫的任何更改或刪除沒有限制。
存放庫所有者可以添加作者來幫助維護存放庫。作者可以`取(Read``入(Write``管理Admin` 限。
访问私有存放庫的體验与访问匿名公共存放庫似。您可以访问存放庫中的所有可用容,包括克隆代码、建立工單、回工單评论、提交拉取請求等。如果你有 "写"权限,只要分支保規則允,你就可以向存放庫的特定分支推送代码。此外,你還可以修改百科面。有了 "管理"限,你就可以修改存放庫的设置
訪問私有存放庫的體驗與訪問匿名公共存放庫似。您可以訪問存放庫中的所有可用容,包括克隆程式碼、建立工單、回工單評論、提交拉取請求等。如果你有 "寫"權限,只要分支保規則允,你就可以向存放庫的特定分支推送程式碼。此外,你還可以修改百科面。有了 "管理"限,你就可以修改存放庫的設定
但如果你不是該存放庫的所有者,就不能除或移該存放庫。
但如果你不是該存放庫的所有者,就不能除或移該存放庫。
## 組織存放庫
對於人存放庫,所有者是建立它的使用者。而對於組織存放庫,所有者是該組織中的所有者团队成员。对該組織存放庫的所有限都取决于团队权限设置
對於人存放庫,所有者是建立它的使用者。而對於組織存放庫,所有者是該組織中的所有者團隊成員。對該組織存放庫的所有限都取決於團隊權限設定
### 所有者团队
### 所有者團隊
建立組織时将自动建立所有者团队,建立者成為所有者团队的第一名成。所有者团队不可除,且至少有一名成
建立組織時將自動建立所有者團隊,建立者成為所有者團隊的第一名成。所有者團隊不可除,且至少有一名成
### 管理员团队
### 管理員團隊
建立团队时,有两种類型的团队。一是管理员团队,另一是普通团队。可以建立一管理员团队来管理某些版本,其成可以对这些版本做任何事情。只有所有者或管理员团队的成才能建立新团队
建立團隊時,有兩種類型的團隊。一是管理員團隊,另一是普通團隊。可以建立一管理員團隊來管理某些版本,其成可以對這些版本做任何事情。只有所有者或管理員團隊的成才能建立新團隊
### 普通团队
### 普通團隊
組織中的普通团队具有可以根`單元(Unit)`進行权限设置。它可以有成员和存儲库范围
組織中的普通團隊具有可以根`單元(Unit)`進行權限設定。它可以有成員和儲存庫範圍
- 一个团队可以访问所属組織的所有存放庫或特殊存放庫。
- 也可以设置該团队是否有建立新存放庫的限。
- 一個團隊可以訪問所屬組織的所有存放庫或特殊存放庫。
- 也可以設定該團隊是否有建立新存放庫的限。
可以過建立 "普通团队",並通過限控制其行為進行限制。一名成可以加入多个团队
可以過建立 "普通團隊",並通過限控制其行為進行限制。一名成可以加入多個團隊
@@ -4,12 +4,12 @@ slug: "profile-readme"
sidebar_position: 12
---
# 个人资料 README
# 個人資料 README
要在您的 Gitea 个人资料页面显示一 Markdown 文件,只需建立一名為 `.profile` 的存放庫,並编辑其中的 `README.md` 文件。Gitea 将自动获取該文件並在您的存放庫上方示。
要在您的 Gitea 個人資料頁面顯示一 Markdown 文件,只需建立一名為 `.profile` 的存放庫,並編輯其中的 `README.md` 文件。Gitea 將自動獲取該文件並在您的存放庫上方示。
注意:您可以此存放庫為私有。这样可以藏您的源文件,使其对公众不可,並允许您将某些文件為私有。但是,README.md 文件是您个人资料上唯一存在的文件。如果您希望完全私有化 .profile 存放庫,则需删除或重命名 README.md 文件。
注意:您可以此存放庫為私有。這樣可以藏您的源文件,使其對公眾不可,並允許您將某些文件為私有。但是,README.md 文件是您個人資料上唯一存在的文件。如果您希望完全私有化 .profile 存放庫,則需刪除或重命名 README.md 文件。
使用者`.profile/README.md`:
使用者`.profile/README.md`:
![个人资料自述文件截](/images/usage/profile-readme.png)
![個人資料自述文件截](/images/usage/profile-readme.png)
@@ -6,26 +6,26 @@ aliases:
- /zh-tw/protected-tags
---
# 受保的標籤
# 受保的標籤
受保的標籤允控制谁有权限建立或更新 Git 標籤。每規則可以匹配單標籤名稱,或者使用适当的模式来同时控制多標籤。
受保的標籤允控制誰有權限建立或更新 Git 標籤。每規則可以匹配單標籤名稱,或者使用適當的模式來同時控制多標籤。
## 设置受保的標籤
## 設定受保的標籤
要保护一个標籤,你需要按照以下步進行操作:
要保護一個標籤,你需要按照以下步進行操作:
1. 進入存放庫的**设置** > **標籤**面。
2. 入一个用于匹配名稱的模式。你可以使用單名稱、[glob 模式](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式。
3. 選择允许的使用者和/或团队。如果将这些字段留空,不允任何人建立或修改此標籤。
4. 選**保存**以保存配置
1. 進入存放庫的**設定** > **標籤**面。
2. 入一個用於匹配名稱的模式。你可以使用單名稱、[glob 模式](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正則表達式。
3. 選擇允許的使用者和/或團隊。如果將這些欄位留空,不允任何人建立或修改此標籤。
4. 選**保存**以保存設定
## 模式受保的標籤
## 模式受保的標籤
該模式使用 [glob](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正则表达式来匹配標籤名稱。對於正则表达式,你需要模式括在斜中。
該模式使用 [glob](https://pkg.go.dev/github.com/gobwas/glob#Compile) 或正則表達式來匹配標籤名稱。對於正則表達式,你需要模式括在斜中。
例:
例:
| 類型 | 模式受保的標籤 | 可能匹配的標籤 |
| 類型 | 模式受保的標籤 | 可能匹配的標籤 |
| ----- | ------------------------ | --------------------------------------- |
| Glob | `v*` | `v``v-1``version2` |
| Glob | `v[0-9]` | `v0``v1``v9` |
@@ -6,55 +6,55 @@ aliases:
- /zh-tw/pull-request
---
# 合請求
# 合請求
請求(PR)是一提出存放庫進行更改的方式。
它是一种将一个分支合到另一分支的請求,附带有对所做更改的描述。
請求通常用作贡献者对存放庫贡献代码的方式,存放庫的维护者可以通過对合並請求進行审查来决定是否接受些更改。
請求(PR)是一提出存放庫進行更改的方式。
它是一種將一個分支合到另一分支的請求,附帶有對所做更改的描述。
請求通常用作貢獻者對存放庫貢獻程式碼的方式,存放庫的維護者可以透過對合併請求進行審查來決定是否接受些更改。
## 建立合請求
## 建立合請求
要建立合請求,您需要遵循以下步
要建立合請求,您需要遵循以下步
1. **Fork 存放庫** - 如果您有直接存放庫進行更改的限,您需要存放庫 fork 到您自己的账户中。
这将建立一您可以其進行更改的存放庫副本。
1. **Fork 存放庫** - 如果您有直接存放庫進行更改的限,您需要存放庫 fork 到您自己的帳號中。
這將建立一您可以其進行更改的存放庫副本。
2. **建立分支(可選)** - 在 fork 的存放庫中建立一新分支,該分支包含您要提出的更改。
分支取一描述性的名稱,以指示更改的容。
2. **建立分支(可選)** - 在 fork 的存放庫中建立一新分支,該分支包含您要提出的更改。
分支取一描述性的名稱,以指示更改的容。
3. **進行更改** - 進行您想要的更改,提交並其推送到 fork 的存放庫中。
3. **進行更改** - 進行您想要的更改,提交並其推送到 fork 的存放庫中。
4. **建立合請求** - 到原始存放庫並到“合請求”選卡。單擊“新建合請求”按,並您的新分支選為源分支。
為您的合請求入描述性标题和描述,然單擊“建立合請求”。
4. **建立合請求** - 到原始存放庫並到“合請求”選卡。單擊“新建合請求”按,並您的新分支選為源分支。
為您的合請求入描述性標題和描述,然單擊“建立合請求”。
## 评审合並請求
## 評審合併請求
建立合請求后,将触发评审流程。存放庫的维护者将收到合請求的通知,並可以查所做的更改。
可以留下评论、請求更改或批准更改。
建立合請求後,將觸發評審流程。存放庫的維護者將收到合請求的通知,並可以查所做的更改。
可以留下評論、請求更改或批准更改。
如果维护者請求更改,您需要在分支中進行些更改,並更改推送到 fork 的存放庫中。
請求将自动使用新更改進行更新。
如果維護者請求更改,您需要在分支中進行些更改,並更改推送到 fork 的存放庫中。
請求將自動使用新更改進行更新。
如果维护者批准更改,他可以将合並請求合到存放庫中。
如果維護者批准更改,他可以將合併請求合到存放庫中。
## 关闭合並請求
## 關閉合併請求
如果您不接受該合請求,您可以关闭它。
关闭合並請求,請到打的合請求並單擊“关闭合並請求”按钮。这将关闭合並請求並且不会将其合
如果您不接受該合請求,您可以關閉它。
關閉合併請求,請到打的合請求並單擊“關閉合併請求”按鈕。這將關閉合併請求並且不會將其合
## 使用“Work In Progress”标记
## 使用“Work In Progress”標記
在合請求中使用“Work In Progress”标记可以防止合請求被意外合
将合並請求标记為“Work In Progress”,您必須在其标题中添加前`WIP:``[WIP]`(不分大小)。
标记前缀可以在您的`app.ini`文件中進行配置
在合請求中使用“Work In Progress”標記可以防止合請求被意外合
將合併請求標記為“Work In Progress”,您必須在其標題中添加前`WIP:``[WIP]`(不分大小)。
標記前綴可以在您的`app.ini`文件中進行設定
```
[repository.pull-request]
WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP]
```
列表的第一个值将用于 helpers 程
列表的第一個值將用於 helpers 程
## 合請求模板
## 合請求模板
关合並請求模板的更多信息請您移步 : [工單与合並請求模板](usage/issue-pull-request-templates.md)
關合併請求模板的更多資訊請您移步 : [工單與合併請求模板](usage/../issue-pull-request-templates)
@@ -9,28 +9,28 @@ aliases:
# 推送
提交推送到 Gitea 服务器时,還有一些外的功能。
提交推送到 Gitea 伺服器時,還有一些外的功能。
## 通過推送打 PR
## 通過推送打 PR
您第一次提交推送到非默认分支,您收到一个链接,您可以單擊該链接访问分支主分支的比较页面。
从那里,您可以轻松建立一拉取請求,即使您想要其目指向另一分支。
您第一次提交推送到非預設分支,您收到一個鏈接,您可以單擊該鏈接訪問分支主分支的比較頁面。
從那裡,您可以輕鬆建立一拉取請求,即使您想要其目指向另一分支。
![Gitea 推送提示](/gitea-push-hint.png)
## 推送選
## 推送選
在 Gitea `1.13` 版本中,添加了一些 [推送選](https://git-scm.com/docs/git-push#Documentation/git-push.txt--oltoptiongt) 的支
在 Gitea `1.13` 版本中,添加了一些 [推送選](https://git-scm.com/docs/git-push#Documentation/git-push.txt--oltoptiongt) 的支
### 支的選
### 支的選
- `repo.private` (true|false) - 更改存放庫的可性。
- `repo.private` (true|false) - 更改存放庫的可性。
这在与 push-to-create 合使用时特别有用。
這在與 push-to-create 合使用時特別有用。
- `repo.template` (true|false) - 更改存放庫是否為模板。
存放庫的可性更改為公开的示例:
存放庫的可性更改為公開的範例:
```shell
git push -o repo.private=false -u origin main
@@ -38,24 +38,24 @@ git push -o repo.private=false -u origin main
## 推送建立
推送建立是一功能,允许您将提交推送到在 Gitea 中尚不存在的存放庫。對於自化和允使用者建立存放庫而無需通過 Web 面非常有用。此功能默认处于禁用状态
推送建立是一功能,允許您將提交推送到在 Gitea 中尚不存在的存放庫。對於自化和允使用者建立存放庫而無需通過 Web 面非常有用。此功能預設處於禁用狀態
### 用推送建立
### 用推送建立
`app.ini` 文件中, `ENABLE_PUSH_CREATE_USER` 设置`true`,如果您希望允使用者在自己的使用者帳戶和所的組織中建立存放庫, `ENABLE_PUSH_CREATE_ORG` 设置`true`。重新启动 Gitea 以使更改生效。您可以在 [配置速查表](../administration/config-cheat-sheet.md#存放庫) 中解有关这两个選项的更多信息
`app.ini` 文件中, `ENABLE_PUSH_CREATE_USER` 設定`true`,如果您希望允使用者在自己的使用者帳戶和所的組織中建立存放庫, `ENABLE_PUSH_CREATE_ORG` 設定`true`。重新啟動 Gitea 以使更改生效。您可以在 [設定速查表](../administration/config-cheat-sheet.md#存放庫-repository) 中解有關這兩個選項的更多資訊
### 使用推送建立
您在前目錄中有一 git 存放庫,您可以通過运行以下命令提交推送到在 Gitea 中尚不存在的存放庫:
您在前目錄中有一 git 存放庫,您可以透過運行以下命令提交推送到在 Gitea 中尚不存在的存放庫:
```shell
# 添加要推送到的程存放庫
# 添加要推送到的程存放庫
git remote add origin git@{domain}:{username}/{尚不存在的存放庫名稱}.git
# 推送到程存放庫
# 推送到程存放庫
git push -u origin main
```
这假设您使用的是 SSH 程,但您也可以使用 HTTPS 程。
這假設您使用的是 SSH 程,但您也可以使用 HTTPS 程。
推送建立将默认使用 `app.ini` 中定的可`DEFAULT_PUSH_CREATE_PRIVATE`
推送建立將預設使用 `app.ini` 中定的可`DEFAULT_PUSH_CREATE_PRIVATE`
@@ -6,90 +6,90 @@ aliases:
- /zh-tw/repo-mirror
---
# 存放庫
# 存放庫
存放庫像允许将存放庫外部源之進行像。您可以使用它在存放庫之间镜像分支、標籤和提交。
存放庫像允許將存放庫外部源之進行像。您可以使用它在存放庫之間鏡像分支、標籤和提交。
## 使用
## 使用
以下是一些存放庫像的可能使用景:
以下是一些存放庫像的可能使用景:
- 您移到了 Gitea,但仍需要在其他源中保留您的项目。在这种情况下,您可以單地设置它以進行像到 Gitea(拉取),这样您的 Gitea 例中就可以取到所有必要的提交史、標籤和分支。
- 您在其他源中有一些旧项目,您不再主使用,但出于归檔目的不想除。在这种情况下,您可以建立一推送像,以便您的活的 Gitea 存放庫可以其更改推送到位置。
- 您移到了 Gitea,但仍需要在其他源中保留您的專案。在這種情況下,您可以單地設定它以進行像到 Gitea(拉取),這樣您的 Gitea 例中就可以取到所有必要的提交史、標籤和分支。
- 您在其他源中有一些舊專案,您不再主使用,但出於歸檔目的不想除。在這種情況下,您可以建立一推送像,以便您的活的 Gitea 存放庫可以其更改推送到位置。
## 从远程存放庫拉取
## 從遠程存放庫拉取
對於現有的程存放庫,您可以按照以下步骤设置拉取像:
對於現有的程存放庫,您可以按照以下步驟設定拉取像:
1. 在右上角的“建立...”菜單中選择“迁移外部存放庫”。
2. 選择远程存放庫服
3. 入存放庫的 URL。
4. 如果存放庫需要身份驗證,請填您的身份驗證信息
5. 選中“該存放庫是一个镜像”選框。
6. 選择“迁移存放庫”以保存配置
1. 在右上角的“建立...”菜單中選擇“遷移外部存放庫”。
2. 選擇遠程存放庫服
3. 入存放庫的 URL。
4. 如果存放庫需要身份驗證,請填您的身份驗證資訊
5. 選中“該存放庫是一個鏡像”選框。
6. 選擇“遷移存放庫”以保存設定
現在,該存放庫定期从远程存放庫進行像。您可以過在存放庫设置中選“立即同步”来强制進行同步。
現在,該存放庫定期從遠程存放庫進行像。您可以過在存放庫設定中選“立即同步”來強制進行同步。
:::warning
:exclamation::exclamation: **注意:**您只能為尚不存在您的例上的存放庫设置拉取像。一旦存放庫建立成功,您就無法再将其转换為拉取像。:exclamation::exclamation:
:exclamation::exclamation: **注意:**您只能為尚不存在您的例上的存放庫設定拉取像。一旦存放庫建立成功,您就無法再將其轉換為拉取像。:exclamation::exclamation:
:::
## 推送到程存放庫
## 推送到程存放庫
對於現有的存放庫,您可以按照以下步骤设置推送像:
對於現有的存放庫,您可以按照以下步驟設定推送像:
1. 在存放庫中,到**设置** > **存放庫**,然進入**镜像设置**部分。
2. 入一存放庫的 URL。
3. 如果存放庫需要身份驗證,請展**授**部分並填您的身份驗證信息。請注意,所請求的**密碼**也可以是您的访问令牌
4. 選**添加推送像**以保存配置
1. 在存放庫中,到**設定** > **存放庫**,然進入**鏡像設定**部分。
2. 入一存放庫的 URL。
3. 如果存放庫需要身份驗證,請展**授**部分並填您的身份驗證資訊。請注意,所請求的**密碼**也可以是您的存取權杖
4. 選**添加推送像**以保存設定
該存放庫現在定期像到程存放庫。您可以過選**立即同步**来强制同步。如果出現错误,会显示一消息助您解决问题
該存放庫現在定期像到程存放庫。您可以過選**立即同步**來強制同步。如果出現錯誤,會顯示一消息助您解決問題
:::warning
:exclamation::exclamation: **注意:** 这将强制推送到程存放庫。这将覆盖远程存放庫中的任何更改! :exclamation::exclamation:
:exclamation::exclamation: **注意:** 這將強制推送到程存放庫。這將覆蓋遠程存放庫中的任何更改! :exclamation::exclamation:
:::
### Gitea 向 GitHub 设置推送
### Gitea 向 GitHub 設定推送
Gitea 设置镜像到 GitHub,您需要按照以下步進行操作:
Gitea 設定鏡像到 GitHub,您需要按照以下步進行操作:
1. 建立一具有選中 _public_repo_ 選的 [GitHub 个人访问令牌](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)。
2. 在 GitHub 上建立一同名的存放庫。 Gitea 不同,GitHub 不支通過推送到远程来建立存放庫。如果您的現有程存放庫您的 Gitea 存放庫具有相同的提交史,您也可以使用現有的程存放庫。
3. 在您的 Gitea 存放庫设置中,填**Git 程存放庫 URL**`https://github.com/<your_github_group>/<your_github_project>.git`
4. 使用您的 GitHub 使用者名填写**授**字段,並将个人访问令牌作為**密碼**。
5. (可選,适用于 Gitea 1.18+)選`推送新提交同步`这样一旦有更改,镜像将会及时更新。如果您意,您還可以禁用定期同步。
6. 選**添加推送像**以保存配置
1. 建立一具有選中 _public_repo_ 選的 [GitHub 個人存取權杖](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)。
2. 在 GitHub 上建立一同名的存放庫。 Gitea 不同,GitHub 不支通過推送到遠程來建立存放庫。如果您的現有程存放庫您的 Gitea 存放庫具有相同的提交史,您也可以使用現有的程存放庫。
3. 在您的 Gitea 存放庫設定中,填**Git 程存放庫 URL**`https://github.com/<your_github_group>/<your_github_project>.git`
4. 使用您的 GitHub 使用者名稱填寫**授**欄位,並將個人存取權杖作為**密碼**。
5. (可選,適用於 Gitea 1.18+)選`推送新提交同步`這樣一旦有更改,鏡像將會及時更新。如果您意,您還可以禁用定期同步。
6. 選**添加推送像**以保存設定
存放庫很快進行推送。要制推送,請選**立即同步**按
存放庫很快進行推送。要制推送,請選**立即同步**按
### Gitea 向 GitLab 设置推送
### Gitea 向 GitLab 設定推送
Gitea 设置镜像到 GitLab,您需要按照以下步進行操作:
Gitea 設定鏡像到 GitLab,您需要按照以下步進行操作:
1. 建立具有 _write_repository_ 作用域的 [GitLab 个人访问令牌](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)。
2. 填**Git 程存放庫 URL**`https://<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git`
3. 在**授**字段中填 `oauth2` 作為**使用者名**,並您的 GitLab 个人访问令牌作為**密碼**。
4. 選**添加推送像**以保存配置
1. 建立具有 _write_repository_ 作用域的 [GitLab 個人存取權杖](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)。
2. 填**Git 程存放庫 URL**`https://<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git`
3. 在**授**欄位中填 `oauth2` 作為**使用者名**,並您的 GitLab 個人存取權杖作為**密碼**。
4. 選**添加推送像**以保存設定
存放庫很快進行推送。要制推送,請選**立即同步**按
存放庫很快進行推送。要制推送,請選**立即同步**按
### Gitea 向 Bitbucket 设置推送
### Gitea 向 Bitbucket 設定推送
Gitea 设置镜像到 Bitbucket,您需要按照以下步進行操作:
Gitea 設定鏡像到 Bitbucket,您需要按照以下步進行操作:
1. 建立一具有選中 _Repository Write_的 [Bitbucket 應用密碼](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)。
2. 填**Git 程存放庫 URL**`https://bitbucket.org/<your_bitbucket_group_or_name>/<your_bitbucket_project>.git`
3. 使用您的 Bitbucket 使用者名填写**授**字段,並應用密碼作為**密碼**。
4. 選**添加推送像**以保存配置
1. 建立一具有選中 _Repository Write_的 [Bitbucket 應用密碼](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)。
2. 填**Git 程存放庫 URL**`https://bitbucket.org/<your_bitbucket_group_or_name>/<your_bitbucket_project>.git`
3. 使用您的 Bitbucket 使用者名稱填寫**授**欄位,並應用密碼作為**密碼**。
4. 選**添加推送像**以保存設定
存放庫很快進行推送。要制推送,請選**立即同步**按
存放庫很快進行推送。要制推送,請選**立即同步**按
### 像現有的 ssh 存放庫
### 像現有的 ssh 存放庫
前,Gitea 不支持从 ssh 存放庫進行像。如果您想要像一 ssh 存放庫,您需要将其转换為 http 存放庫。您可以使用以下命令現有的 ssh 存放庫转换為 http 存放庫:
前,Gitea 不支援從 ssh 存放庫進行像。如果您想要像一 ssh 存放庫,您需要將其轉換為 http 存放庫。您可以使用以下命令現有的 ssh 存放庫轉換為 http 存放庫:
1. 确保运行 gitea 的使用者有权限访问您试图从 shell 像到的 git 存放庫。
2. 在 Web 面的版本库设置 > git 子中為像添加一接收后钩子。
1. 確保運行 gitea 的使用者有權限訪問您試圖從 shell 像到的 git 存放庫。
2. 在 Web 面的版本庫設定 > git 子中為像添加一接收後鉤子。
```
#!/usr/bin/env bash
@@ -8,15 +8,15 @@ aliases:
# 模板存放庫
Gitea `1.11.0` 及以上版本引入了模板存放庫,並且其中一个实現的功能是自动展开模板文件中的特定量。
Gitea `1.11.0` 及以上版本引入了模板存放庫,並且其中一個實現的功能是自動展開模板文件中的特定量。
要告 Gitea 哪些文件需要展,您必須在模板存放庫的 `.gitea` 目錄中包含一 `template` 文件。
要告 Gitea 哪些文件需要展,您必須在模板存放庫的 `.gitea` 目錄中包含一 `template` 文件。
Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作為其 glob 法。它与传统`.gitignore` 法非常相似,但可能存在微的差
Gitea 使用 [gobwas/glob](https://github.com/gobwas/glob) 作為其 glob 法。它與傳統`.gitignore` 法非常相似,但可能存在微的差
## `.gitea/template` 文件
## `.gitea/template` 文件
所有路都是相對於存放庫的根目錄
所有路都是相對於存放庫的根目錄
```gitignore
# 存放庫中的所有 .go 文件
@@ -28,21 +28,21 @@ text/*.txt
# 特定文件
a/b/c/d.json
# 匹配批理文件的大小写变
# 匹配批理文件的大小寫變
**.[bB][aA][tT]
```
**注意:** 当从模板生成存放庫`.gitea` 目錄中的 `template` 文件将被删除。
**注意:** 當從模板生成存放庫`.gitea` 目錄中的 `template` 文件將被刪除。
## 參數展
## 參數展
上述通配符匹配的任何文件中,将会扩展某些量。
上述通配符匹配的任何文件中,將會擴展某些量。
文件名和路的匹配也可以被展,並且会经過谨慎的清理理,以支跨平台的文件系
文件名和路的匹配也可以被展,並且會經過謹慎的清理理,以支跨平台的文件系
所有量都必須`$VAR``${VAR}`的形式。要转义扩展,使用`$$`,例如`$$VAR``$${VAR}`
所有量都必須`$VAR``${VAR}`的形式。要轉義擴展,使用`$$`,例如`$$VAR``$${VAR}`
| 量 | 展為 | 可转换 |
| 量 | 展為 | 可轉換 |
| -------------------- | ----------------------------- | ------ |
| REPO_NAME | 生成的存放庫名稱 | ✓ |
| TEMPLATE_NAME | 模板存放庫名稱 | ✓ |
@@ -50,22 +50,22 @@ a/b/c/d.json
| TEMPLATE_DESCRIPTION | 模板存放庫描述 | ✘ |
| REPO_OWNER | 生成的存放庫所有者 | ✓ |
| TEMPLATE_OWNER | 模板存放庫所有者 | ✓ |
| REPO_LINK | 生成的存放庫接 | ✘ |
| TEMPLATE_LINK | 模板存放庫接 | ✘ |
| REPO_HTTPS_URL | 生成的存放庫的 HTTP(S) 克隆接 | ✘ |
| TEMPLATE_HTTPS_URL | 模板存放庫的 HTTP(S) 克隆接 | ✘ |
| REPO_SSH_URL | 生成的存放庫的 SSH 克隆接 | ✘ |
| TEMPLATE_SSH_URL | 模板存放庫的 SSH 克隆接 | ✘ |
| REPO_LINK | 生成的存放庫接 | ✘ |
| TEMPLATE_LINK | 模板存放庫接 | ✘ |
| REPO_HTTPS_URL | 生成的存放庫的 HTTP(S) 克隆接 | ✘ |
| TEMPLATE_HTTPS_URL | 模板存放庫的 HTTP(S) 克隆接 | ✘ |
| REPO_SSH_URL | 生成的存放庫的 SSH 克隆接 | ✘ |
| TEMPLATE_SSH_URL | 模板存放庫的 SSH 克隆接 | ✘ |
## 转换器 :robot:
## 轉換器 :robot:
Gitea `1.12.0` 添加了一些转换器以應用上述用的量。
Gitea `1.12.0` 添加了一些轉換器以應用上述用的量。
例如,要以 `PASCAL`-case `REPO_NAME`,你的模板應使用 `${REPO_NAME_PASCAL}`
例如,要以 `PASCAL`-case `REPO_NAME`,你的模板應使用 `${REPO_NAME_PASCAL}`
`go-sdk` 传递给可用的转换器的效果如下...
`go-sdk` 傳遞給可用的轉換器的效果如下...
| 转换器 | 效果 |
| 轉換器 | 效果 |
| ------ | ------ |
| SNAKE | go_sdk |
| KEBAB | go-sdk |
@@ -8,25 +8,25 @@ aliases:
# Webhooks
Gitea 支持用于存放庫事件的 Webhooks。可以在存放庫管理员在设置页`/:username/:reponame/settings/hooks` 中進行配置。Webhooks 還可以基組織和整个系统進行配置
所有事件推送都是 POST 請求。目前支
Gitea 支援用於存放庫事件的 Webhooks。可以在存放庫管理員在設定頁`/:username/:reponame/settings/hooks` 中進行設定。Webhooks 還可以基組織和整個系統進行設定
所有事件推送都是 POST 請求。目前支
- Gitea (也可以是 GET 請求)
- Gogs
- Slack
- Discord
- Dingtalk钉钉
- Dingtalk釘釘
- Telegram
- Microsoft Teams
- Feishu
- Wechatwork(企微信)
- Wechatwork(企微信)
- Packagist
### 事件信息
### 事件資訊
**警告**:自 Gitea 1.13.0 版起,payload 中的 `secret` 字段已被用,並在 1.14.0 版中移除:https://github.com/go-gitea/gitea/issues/11755
**警告**:自 Gitea 1.13.0 版起,payload 中的 `secret` 欄位已被用,並在 1.14.0 版中移除:https://github.com/go-gitea/gitea/issues/11755
以下是 Gitea 将发送给 payload URL 的事件信息示例:
以下是 Gitea 將發送給 payload URL 的事件資訊範例:
```http
X-GitHub-Delivery: f6266f16-1bf3-46a5-9ea4-602e06ead473
@@ -108,19 +108,19 @@ X-Gitea-Event: push
}
```
###
###
是一个示例,演示如何使用 Webhooks 在推送請求到存放庫时运行一 php 本。
在你的存放庫设置中,在 Webhooks 下,设置一个如下的 Gitea webhook
是一個範例,演示如何使用 Webhooks 在推送請求到存放庫時運行一 php 本。
在你的存放庫設定中,在 Webhooks 下,設定一個如下的 Gitea webhook
- 目 URLhttp://mydomain.com/webhook.php
- 目 URLhttp://mydomain.com/webhook.php
- HTTP 方法:POST
- POST Content Typeapplication/json
- Secret123
- 触发条件:推送事件
- 觸發條件:推送事件
- 激活:勾選
現在在你的服器上建立 php 文件 webhook.php。
現在在你的服器上建立 php 文件 webhook.php。
```php
<?php
@@ -178,8 +178,8 @@ if (json_last_error() !== JSON_ERROR_NONE) {
// success, do something
```
在 Webhook 设置中有一个“测试推送(Test Delivery)”按,可以测试配置,還有一“最近推送记录Recent Deliveries)”的列表。
在 Webhook 設定中有一個“測試推送(Test Delivery)”按,可以測試設定,還有一“最近推送記錄Recent Deliveries)”的列表。
### 授权头Authorization header
### 授權頭Authorization header
** 1.19 版本始**Gitea 的 Webhook 可以配置為向 Webhook 目标发送一 [权头authorization header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)。
** 1.19 版本始**Gitea 的 Webhook 可以設定為向 Webhook 目標發送一 [權頭authorization header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization)。