我已经通过 SSL 设置了一个 mercurial 服务器。在 apache 配置文件中,我使用 mysql 数据库设置了身份验证。
我希望每个人都能够在没有凭据的情况下从存储库中提取,但将推送权限限制为经过身份验证的用户。现在完成的方式要么是每个人都通过拉取和推送的身份验证,要么没有人是。
我的apache配置是这样的:
<Location /hg/repo>
   AuthType Basic
   AuthName "Repository Access"
   AuthBasicAuthoritative Off
   AuthUserFile /dev/null
   AuthMySQL                    On
   AuthMySQL_Authoritative      On
   AuthMySQL_Host               localhost
   AuthMySQL_DB                 repo
   AuthMySQL_User               repo
   AuthMySQL_Password_Table     users_auth_external
   AuthMySQL_Group_Table        users_auth_external
   AuthMySQL_Username_Field     username
   AuthMySQL_Password_Field     passwd
   AuthMySQL_Group_Field        groups
   AuthMySQL_Encryption_Types   SHA1Sum
   Require group                pink-image
   <LimitExcept GET>
       Require valid-user
   </LimitExcept>
</Location>
hg 还需要对 ssl pull 进行身份验证,无论 LimitExcept 开关。
有没有办法限制身份验证仅用于推送到存储库?
简单的 http 访问是不够的,因为如果某人是开发人员,她会通过 https 签出代码。
SSH 访问是不可能的,因为一些开发者有防火墙禁止的 ssh 端口。
解决方案之一是 hg 是否会记住 https 凭据。
感谢您阅读问题。