简介
Fuchsia 的 Gerrit 安装支持自定义结构化元数据文件。 这些文件旨在:
- 人类可读,并提供名称、说明等实用信息 以及软件包的规范网址
- 机器可读(方法是使用标准格式定义文件); 因此可能被自动化系统用来实现自动添加 或找出提醒系统应提交的 bug 组成部分 问题
目前,唯一自动用于元数据文件的操作是自动将 审核联系人,以及在添加/提交 CL 时发送电子邮件通知。这些 提交前部分对相关信息进行了详细说明。
元数据文件仅适用于第一方代码。
格式
元数据文件包括:
- 名称为“
METADATA.textproto
” - 使用 Protocol Buffers 版本指定 3
- 使用 Protocol Buffer Text Format Language(协议缓冲区文本格式语言)编写 规范
元数据消息类型如下:
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
(用于定义第三方代码的元数据)。