1

我有几个 mercurial 服务器,人们正在使用单个用户推送更改hg,并且只使用 ssh 公钥身份验证,每个人都有自己的密钥。

如何配置服务器,以便它根据正在使用的公钥选择用户名进行推送?

可能吗?如果不是,为什么以及有什么替代方法,所以我不必.hgrc在我连接到的每个帐户 * 机器上配置用户名。

另外,考虑一下其他用例:你有一个由 root 在机器上克隆的 hg 存储库,两个不同的人正在连接这台机器(以 root 身份),进行更改并尝试提交和推送更改。

这两个使用相同的帐户,但它们使用不同的 ssh 密钥连接,所以你想看看是谁做的。目前,这些将显示为 .hgrc 中配置的用户

4

1 回答 1

2

“用于推送的用户名”,即推送时用于认证的用户名和密码与显示的用户名无关hg log

当您进行提交时,Mercurial 会记录正在运行的用户的名称hg commit。这通常是~/.hgrc为该用户配置的。此信息是变更集的一部分,以后无法更改。

hg commit对于您在登录时运行多个不同管理员的特定用例root,我建议不要~/.hgrc. 当您提交时,Modern Mercurial 将中止。每次使用当然很烦人hg commit -u,所以幸运的是可以通过配置HGUSER环境变量来设置用户名。这样您就可以在每个会话的基础上配置用户名,而无需使用持久配置。

HGUSER在执行 ssh 时通过,请参阅Can I forward env variables over ssh?

当我使用这个方案时,我只是在命令行历史记录中找到了正确的用户名,方法是按 Ctrl-r 并搜索HGUSER. 您可能还可以在 shell 启动脚本中设置一些东西,您可以在其中查看密钥ssh-add -L并在此基础上设置正确的用户名。

于 2012-05-25T10:58:34.927 回答