将 Mercurial 用户名替换为经过 Apache 验证的用户名

将 Mercurial 用户名替换为经过 Apache 验证的用户名

我有 Debian 6 x64、python 2.6、Apache 2.2、Mercurial 1.8。Mercurial 通过 HTTPS 访问,python 使用mod_wsgi,Apache 使用 执行“身份验证:基本” mod_authnz_external

我需要替换用户提供的 Mercurial 用户名。因此,如果用户将用户名配置为“JD”,但使用用户名“[电子邮件保护]“, 我想看看 ”[电子邮件保护]“在 Mercurial 提交历史中。

答案1

你不能这样做。你不能对进入服务器的变更集进行任何更改,你只能检查它们(使用pretxnchangegroup),如果您不喜欢所看到的内容,请拒绝它们。

您无法更改任何内容的原因是变更集 ID 取决于变更集本身的所有信息:用户名、提交日期、提交消息、更改的文件、更改本身。如果您更改任何内容,那么您也会更改变更集哈希。

如果变更集已被推送到其他地方,则更改变更集哈希值是不幸的 - 您最终会得到重复的变更集,因为您无法向客户端传达您已更改其变更集的信息。

您可能会说,如果 Alice 未使用真实姓名将变更集推送到服务器,那将是一个错误,但这实际上是一个功能。使用分布式版本控制系统,Alice 可以直接从 Bob 那里拉取变更集来查看他的变更。然后,她可能会在他的变更集之上添加更多变更集,并将整个变更集推送到服务器。因此,如果您阻止用户推送除他们自己的变更集之外的任何内容,那么您就阻止了这种直接协作。

相关内容