将提交代码的作者映射到Phabricator账户

4

我们的Subversion存储库和Phabricator安装程序有不同的身份验证系统。

但似乎Phabricator假定提交作者和Phabricator帐户将是相同的。文档中没有提到如何将提交作者映射到Phabricator帐户。

是否可以使用不同的帐户名与Phabricator?

我们如何映射提交作者和Phabricator帐户?


它不是仅查找提交作者的电子邮件地址并将其与 Phabricator 账户匹配吗? - Fanis Hatzidakis
是的,这就是问题所在。仓库可能连接到Active Directory,提交作者格式为<domain><username> - 没有电子邮件。Phabricator无法将其映射到帐户名称,因为Phabricator帐户名称不允许斜杠。 - onknows
2个回答

9
Phabricator支持几种事件监听器来扩展其功能。其中一种可用的监听器是TYPE_DIFFUSION_LOOKUPUSER,它可以拦截从Diffusion查找用户。我编写了一个监听器来利用这个功能来查找svnalias文件,我在这里提供了该文件:https://github.com/make-all/libphalias 在我的情况下,我已经改变了svn以使用与Phabricator相同的身份验证源,并将旧名称保留为svnalias文件中的别名,因此历史检入可以链接到Diffusion中的正确用户。我的插件基本上只直接处理这种情况。
如果您想继续在svn中使用旧名称,则可能需要修改别名文件的路径以使用不同的文件,以避免干扰svn,但格式相同。或者,如果您已经有其他映射名称的方式,您可以将我的插件用作示例。
安装并配置别名列表后,任何新的签入都应链接到Phabricator用户。 为了处理Phabricator已经导入的现有签入,您需要运行 bin / repository reparse --all <REPO> --message ,其中 <REPO> 替换为您的存储库的Phabricator名称。
假设您在Phabricator中有一个名为 steven 的用户,在svn(或其他系统)中被称为 steve ,则您的别名文件应包括以下内容:
[aliases]
steve = steven

如果您已经更改了svn中的用户名以将其与phabricator同步,并且仅出于历史目的而这样做,那么文件可以是/etc/subversion/aliases本身,但如果您不想影响svn,则使用具有相同格式的不同文件。

你能否举个例子,展示一个适用于你的插件的Subversion别名文件?因为在重新解析仓库后,我仍然没有将Subversion账户与Phabricator用户关联起来。 - Steven
我编辑了帖子,加入了别名文件的示例。 - JSON
非常感谢您的快速回复。对于新提交似乎运行良好,但是我仍然在已经存在的提交方面遇到了问题,即使重新解析后也是如此。我尝试重新启动Apache以便在重新解析之前重新加载别名文件,但是它没有起作用。您有任何想法吗?也许我可以更新MySql表,但我担心会破坏某些东西! - Steven
然而,如果我使用./bin/repository reparse R5:31537 --message来解析仅有的1个提交,名称解析将正常工作... - Steven
最近扩散和存储库基础设施方面发生了很多事情,所以如果有什么变化或故障,我也不会感到惊讶。 - JSON
你是对的,更新解决了问题!非常感谢! - Steven

0

简单说明一下,这个功能现在已经内置到Phabricator中了。每个提交的身份都会被跟踪,并且管理员可以管理与phab用户的映射。

https://secure.phabricator.com/T12164


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接