簡介
Fuchsia 的 Gerrit 安裝支援自訂結構化中繼資料檔案。 這類檔案的主要用途是:
- 清楚易懂,並提供實用的資訊,例如名稱、說明 和套件的標準網址
- 使用標準格式定義檔案,機器能夠讀取,且 因此自動化系統可使用這類功能 審查人員給 CL,或是找出通知系統應該歸檔的錯誤元件 可用來解決
目前,只有系統自動使用中繼資料檔案 新增/提交 CL 時,將審查人員傳送給 CL,以及電子郵件通知。這些 請參閱「預先提交」一節的說明。
中繼資料檔案僅適用於第一方程式碼。
格式
中繼資料檔案包括:
- 名為「
METADATA.textproto
」 - 使用通訊協定緩衝區版本 3
- 使用通訊協定緩衝區文字格式語言編寫的 規格
中繼資料訊息類型如下:
syntax = "proto3";
// This proto is located at
// https://github.com/googleapis/googleapis/blob/master/google/type/date.proto
import "google/type/date.proto";
// IssueTracker contains the project configuration for the Google
// Issue Tracker.
message IssueTracker {
int64 component_id = 1;
}
message Tracker {
repeated IssueTracker issue_tracker = 2;
// for_automation defines whether this tracker should be used by automated
// processes (e.g. alerts).
bool for_automation = 3;
}
message Presubmit {
repeated string review_notify = 1;
repeated string auto_reviewers = 2;
}
message Metadata {
// name is the name of the API/Package/Program.
string name = 1;
string description = 2;
// url points to some documentation/landing page.
string url = 3;
// Date this metadata was last reviewed by a human.
google.type.Date last_reviewed_date = 4;
repeated Tracker trackers = 5;
// presubmits are used for defining presubmits.
// The field is marked repeated for future expansion, but only
// one message should be used.
repeated Presubmit presubmits = 6;
}
以下是中繼資料檔案的偽造範例:
name: "Fuchsia source code automation"
description: "A binary for automating source code gardening tasks"
url: "https://fuchsia.dev"
last_reviewed_date: {
year: 2022
month: 1
day: 23
}
trackers: {
issue_tracker: {
component_id: 1478090
}
}
presubmits: {
auto_reviewers: "frodo@example.com"
review_notify: "sauron@example.com"
review_notify: "gandalf@example.com"
}
多個中繼資料檔案
為了支援含有多個不同專案的大型存放區
METADATA.textproto
檔案可用於整個檔案樹狀結構。中繼資料檔案
就會套用至自己的目錄和下方所有目錄。
預先提交
presubmit
欄位可讓您指定應
自動以審查者 (auto_reviewers
) 身分加入每份變更清單
誰應該在異動清單項目更新時收到電子郵件通知
已上傳/已提交 (review_notify
)。
以下是包含多個中繼資料檔案的階層範例:
├── alice
│ ├── METADATA.textproto
│ └── README.md
├── foo
│ └── bar
│ ├── baz
│ │ └── METADATA.textproto
│ │ └── server.go
│ └── METADATA.textproto
│ └── hello.rs
├── METADATA.textproto
└── README.md
將 /METADATA.textproto
中指定的評論者新增/通知使用者
是對整個存放區中的任何檔案變更評論者:
/foo/bar/METADATA.textproto
適用於 /foo/bar
目錄中的所有項目,例如
以及子項目錄 /foo/bar/baz
評論者:
「/foo/bar/baz/METADATA.textproto
」只會套用到在以下應用程式編輯的檔案:
/foo/bar/baz/
目錄內。
與其他檔案的關係
中繼資料檔案與其他檔案沒有關係,例如 OWNERS
(用於指定目錄的擁有者) 或 README.fuchsia
(用於定義第三方程式碼的中繼資料)。