Phabricator 可以在特定分支的提交中忽略 Ref Txxx 吗?

Can Phabricator ignore Ref Txxx in commits for a particular branch?

我们在 git 提交 link 那些 phabricator 任务中使用 Ref Txxx 语法。不错的功能,正是我们想要的,但是:

特定分支 的开发和变基过程中,这会在 phabricator 历史中产生很多噪音,即很多提交是在 rebase 等之后显示为 striketrough

这可以避免吗?当然,我可以使用虚拟 Ref,然后在我认为完成后替换它们。但是我可以排除一个分支不受 phabricator 的监控,还是有另一种聪明的方法来处理这个问题?

是的,您可以让 phabricator 只监视某些分支,从而隐式地忽略其他分支。

转到 Repositories -> select 存储库 -> 操作 -> 管理存储库 -> 分支 -> 编辑。在这里你可以设置 Track Only 来描述 phabricator 应该查看哪些分支。

我有很多分支,我希望 phabricator 忽略 personal/$USER/ 个分支,因此我将 Track Only 设置为:

regexp(/^(?!personal)/)

看看documentation

Anders 的回答不能满足我们的需求,因为将一个分支排除在跟踪之外意味着 Phabricator 根本看不到它,因此无法在 Diffusion 中浏览该分支,这使得无法进行代码审查内联评论。我们要做的只是防止Ref Txxx出现在匹配指定模式的分支中时生效。

事实证明,这正是 Autoclose 所做的。文档没有说明,名称也没有暗示,但是 Ref Txxx 只在启用了 Autoclose 的分支中生效。文档只说 Autoclose 控制 Closes Txxx 之类的东西是否可以自动更改任务的状态。

浏览到您在 Diffusion 中的存储库和 select ≡ 操作管理存储库分支机构编辑.

假设您要禁用 feature/* 分支中的 Ref 链接。将 "Autoclose Only" 设置为:

regexp(/^(?!feature\/)/)

(注意使用 \/ 来转义 /,否则将被视为正则表达式的结尾。)

这是一个列表,如果它与任何一个或多个模式匹配,则启用分支,因此假设您要为 masterrelease/* 启用 Ref 链接,和 develop/* 分支并在所有其他分支中禁用它们。您可以将 "Autoclose Only" 设置为:

master
regexp(/^release\//)
regexp(/^develop\//)