近期,GitHub 推出一个新的特性 Show the CODEOWNERS for a single file,也即是在 GitHub 上展示某个特定文件的所有者,具体效果是怎样的呢?来,跟我一起看看吧。
激活新特性
目前,这个特性需要手动激活,操作很简单,只需要点击 GitHub 个人主页右上角的头像,选中 Feature Preview,并在 File Codeowners 弹框中点击 Enable 即可激活。
声明文件所有者
首先,你需要为你的 GitHub 项目添加一个名为 CODEOWNERS 文件,用于声明代码文件或文档文件对应的所有者。该文件可以放置在项目根目录或者 docs、.github 目录下。
CODEOWNERS 文件内容的书写格式与 .gitignore 一致,GitHub 官方给出了一个细致的示例:
# This is a comment.
# Each line is a file pattern followed by one or more owners.
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
* @global-owner1 @global-owner2
# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
*.js @js-owner
# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
*.go docs@example.com
# In this example, @doctocat owns any files in the build/logs
# directory at the root of the repository and any of its
# subdirectories.
/build/logs/ @doctocat
# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
docs/* docs@example.com
# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
apps/ @octocat
# In this example, @doctocat owns any file in the `/docs`
# directory in the root of your repository.
/docs/ @doctocat依据上面 GitHub 官方示例,我简单为我的项目添加一个 CODEOWNERS 文件,放置在项目根目录下,文件内容如下:
*.py @yanglbme
*.java @yanglbme
docs/ @yanglbme
java/ @yanglbme
python/ @yanglbme这样写其实就是告诉 GitHub,在本项目中,所有以 .py 或者 .java 后缀命名的文件,以及 docs、java、python 文件夹下的所有文件,都归 GitHub 用户 yanglbme 所有。
特性效果
点击 GitHub 项目 AutoComplete.java 文件,可以看到代码行数左侧有个 Owner 的 logo,光标移动到 logo,可以看到显示 You own this file,说明特性已生效。
当然,如果是非 Owner,会看到这个文件是显示 Owned by yanglbme。

注意:无论是否是文件的 Owner,都能看到特性效果,前提是你需要先 Enable 激活才行。
不止于此
CODEOWNERS 文件其实还有另外的用途,就是用在代码的 Review 上。如果你是项目的所有者,那么你可以在 Settings 中设置分支保护,设置提交需要经过代码所有者 Code Owners 审查。

一旦有其他用户对你的文件做出修改,GitHub 便会自动发起 review 请求,请求文件 Owner 进行 review。

怎么样,是不是又 Get 了一个新技巧?










