3 个版本
0.1.9 | 2024年1月6日 |
---|---|
0.1.8 | 2023年9月19日 |
0.1.7 | 2023年9月11日 |
#559 in 开发工具
每月 24 次下载
74KB
2K SLoC
github-distributed-owners
一个从文件树中分布的 OWNERS 文件自动生成兼容 GitHub 的 CODEOWNERS 文件的工具。
在文件树中分发 OWNERS 配置可以更容易地找到拥有代码库特定部分的适当人员/团队。这在多团队、单代码库环境中尤其有用。它还有一个很好的特性,允许团队编辑自己的 OWNERS 文件,只需团队内部审批即可。由于 GitHub 支持单个 CODEOWNERS 文件,你可以选择授予 所有人 编辑所有者的权限,或者为所有团队设置一个较小的审阅者小组,将更改发送给每个团队,这会带来问题。
[!NOTE] 如果您正在使用 github-distributed-owners,我们想听到您的声音!请在这里给我们留言。 :)
使用方法
在包含用户或组引用的目录中创建名为 OWNERS
的文件,这些引用以换行符分隔。
github_username
[email protected]
@group
一旦设置到位,您就可以在 git 仓库的根目录中运行以下命令来生成兼容 GitHub 的 CODEOWNERS 文件
github-distributed-owners --output-file .github/CODEOWNERS
[!WARNING] 如果您要执行此工具,则生成的 CODEOWNERS 文件(默认为
.github/CODEOWNERS
)不应有任何所有者。否则,会导致拥有该文件的任何组都需要批准每个 OWNERS 的更改,这会部分地抵消此过程的目的。这可以通过在 CODEOWNERS 文件旁边添加以下内容来实现,不列出任何所有者[CODEOWNERS] set inherit = false
预提交
示例预提交配置
repos:
- repo: https://github.com/andrewring/github-distributed-owners
rev: v0.1.8
hooks:
- id: github-distributed-owners
默认的 CODEOWNERS 位置是 .github/CODEOWNERS
。这可以通过以下方式更改
hooks:
- id: github-distributed-owners
args: ["--output-file=<FILE_PATH>"]
请注意,GitHub 只会在少数几个位置尊重 CODEOWNERS 文件。有关详细信息,请参阅文档。
您还可以通过过滤通过钩子处理的文件来进一步优化预提交行为,如下所示
hooks:
- id: github-distributed-owners
files: (.*/OWNERS|^.github/CODEOWNERS$)
NB: 如果指定了 --output-file
,如上所示,则必须更新 CODEOWNERS 路径。
安装
要独立安装github-distributed-owners,从crates.io,只需运行
cargo install github-distributed-owners --locked
所有权继承
默认情况下,目录的所有者自动包含为子目录的所有者。可以通过设置--implicit-inherit false
来更改默认行为。对于单个目录和模式,可以使用以下语法进行覆盖:set inherit = false
。
继承示例
# /OWNERS
user0
user1
# /foo/OWNERS
user2
user3
# /foo/bar/OWNERS
set inherit = false
user4
user5
在上面的示例中,/foo
下的文件更改可以由user0
、user1
、user2
或user3
中的任何一个人批准。但是,/foo/bar
下的文件更改只能由user4
和user5
批准。
文件模式
在文件顶部列出的用户/组用于定义目录级别的所有文件的所有权,您还可以指定目录内的模式。这通过在方括号内提供模式来完成,如[*.rs]
,然后是所有者和设置值。
示例
# Directory level owners
user0
user1
# Additional owners for rust source files
[*.rs]
user2
user3
# Separate owners for special files
[special_*]
set inherit = false
user4
user5
许可证
此操作是在MIT许可证的条款下分发的,有关详细信息,请参阅LICENSE。
贡献和支持
欢迎任何贡献!
依赖关系
~8.5MB
~144K SLoC