我有几个mercurial服务器,人们正在使用单个用户hg
推送更改,并且仅使用ssh公钥认证,每个用户都拥有自己的密钥。
如何配置服务器以便根据所使用的公钥选择推送的用户名?
有可能吗?如果没有,为什么以及有什么替代方案,所以我不必在我连接的每个帐户*机器上的.hgrc
中配置用户名。
另外,请考虑其他用例:您在计算机上有root克隆的hg存储库,并且两个不同的人正在连接此计算机(以root用户身份),进行更改并尝试提交并推送更改。
这两个帐户使用相同的帐户,但它们使用不同的ssh密钥连接,因此您可能希望查看是谁执行此操作。目前,这些将显示为.hgrc
中配置的用户答案 0 :(得分:2)
“用于推送的用户名”,即推送时用于身份验证的用户名和密码,无与hg log
显示的用户名有关
当您进行提交时,Mercurial会记录运行hg commit
的用户的名称。这通常在~/.hgrc
为该用户配置。此信息是变更集的一部分,以后不能更改。
对于您在hg commit
登录时有多个不同管理员运行root
的特定用例,我建议不在~/.hgrc
中配置用户名。现代Mercurial将在您提交时中止。每次使用hg commit -u
当然非常烦人,因此您可以通过配置HGUSER
环境变量来设置用户名。这样就可以在不使用持久配置的情况下基于每个会话配置用户名。
要在执行ssh时通过HGUSER
,请参阅Can I forward env variables over ssh?
当我使用此方案时,我只需按Ctrl-r并搜索HGUSER
,即可在命令行历史记录中找到正确的用户名。你也可以在shell启动脚本中设置一些东西,用ssh-add -L
查看密钥,并根据它设置正确的用户名。