---
date: "2019-11-21T17:00:00-03:00"
slug: "automatically-linked-references"
sidebar_position: 15
aliases:
  - /zh-tw/automatically-linked-references
---

# 自動鏈接引用

當發佈問題、拉取請求或評論時，文本描述會被解析以查找引用。這些引用將顯示為問題視圖中的鏈接，並在某些情況下產生某些操作。

同樣，當提交消息被列出時，它們會被解析，並且當它們被推送到主分支時可以觸發操作。

為了防止創建意外引用，有一些規則來識別它們。例如，它們不應包含在代碼文本中。它們還應該與周圍文本合理地分開（例如，使用空格）。

## 用戶、團隊和組織提及

當找到 `@username` 形式的文本並且 `username` 與現有用戶的名稱匹配時，會創建一個提及引用。這將通過將文本更改為該用戶的個人資料鏈接來顯示，並根據用戶是否具有訪問內容的必要權限，可能會為被提及的用戶創建通知。

示例：

> [@John](#)，你能看看這個嗎？

這對於團隊和組織也是有效的：

> [@Documenters](#)，我們需要計劃這個。
> [@CoolCompanyInc](#)，這個問題關係到我們所有人！

當適用時，團隊將收到郵件通知，但整個組織不會。

提交消息不會產生用戶通知。

## 提交

可以使用其 SHA1 哈希或至少七個字符的一部分來引用提交。它們將顯示為對應提交的鏈接。

示例：

> 這個錯誤是在 [e59ff077](#) 中引入的

## 問題和拉取請求

可以使用簡單的 `#1234` 表示法創建對其他問題或拉取請求的引用，其中 _1234_ 是同一倉庫中問題或拉取請求的編號。這些引用將顯示為指向引用內容的鏈接。

創建此類引用的效果是，在引用的文檔中創建一個通知，前提是引用的創建者對其具有閱讀權限。

示例：

> 這似乎與 [#1234](#) 有關

也可以使用 `owner/repository#1234` 的形式引用其他倉庫中的問題和拉取請求：

> 這似乎與 [mike/compiler#1234](#) 有關

或者，也可以使用 `!1234` 表示法。即使在 Gitea 中，拉取請求也是一種問題，`#1234` 形式將始終鏈接到問題；如果鏈接的條目恰好是拉取請求，Gitea 會適當地重定向。使用 `!1234` 表示法，將創建一個拉取請求鏈接，如果需要，將重定向到問題。
然而，如果使用外部跟蹤器，這種區分可能很重要，因為鏈接到問題和拉取請求並不可以互換。

## 拉取請求和提交消息中的可操作引用

有時提交或拉取請求可能會修復或恢復記錄在特定問題中的問題。Gitea 支援通過在引用前加上特定關鍵字來關閉和重新打開引用的問題。常見的關鍵字包括 "closes"、"fixes"、"reopens" 等。此列表可以由站點管理員[自定義](../administration/config-cheat-sheet.md)。

示例：

> 此 PR _closes_ [#1234](#)

如果接受可操作引用，這將在引用的問題上創建一個通知，宣布當合併引用的 PR 時將關閉該問題。

要接受可操作引用，必須滿足以下條件之一：

- 評論者在創建引用時具有關閉或重新打開問題的權限。
- 引用在提交消息中。
- 引用作為拉取請求描述的一部分發佈。

在最後一種情況下，只有在合併拉取請求的人具有權限時，問題才會被關閉或重新打開。

此外，只有拉取請求和提交消息可以創建操作，只有問題可以通過這種方式關閉或重新打開。

默認關鍵字是：

- **關閉**：close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved
- **重新打開**：reopen, reopens, reopened

## 拉取請求和提交消息中的時間跟蹤

當提交或合併拉取請求導致自動關閉問題時，可以通過提交消息添加解決此問題所花費的時間。

要指定解決問題所花費的時間，您需要在問題號後指定格式為 `@<number><time-unit>` 的時間。在一條提交消息中，您可以為每個問題指定多個修復問題和花費的時間。

支援的時間單位（`<time-unit>`）：

- `m` - 分鐘
- `h` - 小時
- `d` - 天（等於 8 小時）
- `w` - 週（等於 5 天）
- `mo` - 月（等於 4 週）

指定時間的數字（`<number>`）也可以是小數，例如 `@1.5h` 代表一個半小時。可以組合多個時間單位，例如 `@1h10m` 代表 1 小時 10 分鐘。

提交消息示例：

> Fixed #123 spent @1h, refs #102, fixes #124 @1.5h

這將導致在問題 #123 上添加 1 小時，在問題 #124 上添加 1.5 小時。

## 外部跟蹤器

Gitea 支援使用外部問題跟蹤器，並且可以在拉取請求中創建對外部託管問題的引用。然而，如果外部跟蹤器使用編號來識別問題，它們將與 Gitea 中託管的拉取請求無法區分。為了解決這個問題，Gitea 允許使用 `!` 標記來識別拉取請求。例如：

> 這是問題 [#1234](#)，鏈接到外部跟蹤器。
> 這是拉取請求 [!1234](#)，鏈接到 Gitea 中的拉取請求。

`!` 和 `#` 可以互換使用於問題和拉取請求，除了這種情況，需要區分。如果倉庫使用外部跟蹤器，squash 合併的提交消息將默認使用 `!` 作為引用。

## 問題和拉取請求引用摘要

此表說明了不同種類的問題和拉取請求的交叉引用。
在示例中，`User1/Repo1` 指的是使用引用的倉庫，而 `UserZ/RepoZ` 表示不同的倉庫。

| User1/Repo1 中的引用  | Repo1 問題是外部的 | RepoZ 問題是外部的 | 應渲染                                          |
| --------------------- | :----------------: | :----------------: | ----------------------------------------------- |
| `#1234`               |         no         |         -          | 指向 `User1/Repo1` 中問題/拉取請求 1234 的鏈接  |
| `!1234`               |         no         |         -          | 指向 `User1/Repo1` 中問題/拉取請求 1234 的鏈接  |
| `#1234`               |        yes         |         -          | 指向 `User1/Repo1` 的外部問題 1234 的鏈接       |
| `!1234`               |        yes         |         -          | 指向 `User1/Repo1` 的拉取請求 1234 的鏈接       |
| `User1/Repo1#1234`    |         no         |         -          | 指向 `User1/Repo1` 中問題/拉取請求 1234 的鏈接  |
| `User1/Repo1!1234`    |         no         |         -          | 指向 `User1/Repo1` 中問題/拉取請求 1234 的鏈接  |
| `User1/Repo1#1234`    |        yes         |         -          | 指向 `User1/Repo1` 的外部問題 1234 的鏈接       |
| `User1/Repo1!1234`    |        yes         |         -          | 指向 `User1/Repo1` 的拉取請求 1234 的鏈接       |
| `UserZ/RepoZ#1234`    |         -          |         no         | 指向 `UserZ/RepoZ` 中問題/拉取請求 1234 的鏈接  |
| `UserZ/RepoZ!1234`    |         -          |         no         | 指向 `UserZ/RepoZ` 中問題/拉取請求 1234 的鏈接  |
| `UserZ/RepoZ#1234`    |         -          |        yes         | 指向 `UserZ/RepoZ` 的外部問題 1234 的鏈接       |
| `UserZ/RepoZ!1234`    |         -          |        yes         | 指向 `UserZ/RepoZ` 的拉取請求 1234 的鏈接       |
| **字母數字問題 ID：** |         -          |         -          | -                                               |
| `AAA-1234`            |        yes         |         -          | 指向 `User1/Repo1` 的外部問題 `AAA-1234` 的鏈接 |
| `!1234`               |        yes         |         -          | 指向 `User1/Repo1` 的拉取請求 1234 的鏈接       |
| `User1/Repo1!1234`    |        yes         |         -          | 指向 `User1/Repo1` 的拉取請求 1234 的鏈接       |
| _不支援_              |         -          |        yes         | 指向 `UserZ/RepoZ` 的外部問題 `AAA-1234` 的鏈接 |
| `UserZ/RepoZ!1234`    |         -          |        yes         | 指向 `UserZ/RepoZ` 中的拉取請求 1234 的鏈接     |

_最後一部分是針對使用字母數字格式的外部問題跟蹤器的倉庫。_

_**-**：不適用。_

:::note
在具有不同類型問題（外部與內部）的倉庫之間的自動引用尚未完全支援，可能會渲染無效鏈接。
:::
