我正在使用hgweb发布本地存储库。
/project_path/project_name/.hg/..hgrc有:
[hooks]
changegroup.bitbucket = hg push ssh://hg@bitbucket.org/user/repo当我使用hgweb时,所有changegroup都可以正常工作,但是当我通过nginx与fcgi一起使用hgweb时,它根本不起作用。我需要这些功能来进行某种备份。
发布于 2011-11-26 20:14:40
它主要是像信任。
Mercurial需要在hgrc文件解析/运行之前信任它。如果您的/project_path/project_name/.hg/.hgrc文件是您拥有的,那么当您在解析/使用它时,在运行hg serve时使用Mercurial。但是,nginx作为自己的用户运行,可能是nginx,它不信任您拥有的文件,因此当它调用Mercurial时,这些文件将被忽略(请参阅注意事项)。
这个Mercurial信任链接给出了更好的解释,并讨论了如何说"nginx信任X",但是如果它是一个单用户系统,或者您希望每个人都信任您,您可以在系统中抛出一个信任块--全球/etc/mercurial/hgrc文件,说每个人都信任X。
注意:它并不只是忽略那些文件,它在STDERR上设置了一个警告,在apache土地上,您可以在error.log中找到这些警告,但是在nginx中,似乎没有人发现这些警告,所以我不知道nginx把它们放在哪里。
发布于 2011-11-26 19:26:55
我想您在这里可能有某种身份验证问题。当从命令行运行hg serve时,后台运行的ssh-agent提供了ssh凭据。
但是,当将hgweb作为服务运行时,这是行不通的,因为后台没有运行ssh代理。如果要启动ssh-agent,就不可能输入ssh密钥的密码。
Bitbucket使用ssh密钥对您进行身份验证,因此不能仅仅将密码添加到上面的hg push命令中。
一个可能的解决方案是不使用bitbucket作为备份,而是使用不同的mercurial服务器,让您在命令行上提供简单的密码。
恐怕我不能再帮你了。
https://stackoverflow.com/questions/8279796
复制相似问题