我使用hgweb发布我的本地存储库。
/project_path/project_name/.hg/.hgrc有:
[hooks]
changegroup.bitbucket = hg push ssh://hg@bitbucket.org/user/repo
当我使用 hg serve 时,所有的changegroup挂钩都能正常工作,但是当我使用 hgweb 通过nginx使用fcgi时,它就是'根本不工作。我需要这些功能来进行某种备份。
答案 0 :(得分:2)
它大部分都像Trust。
Mercurial在解析/运行它之前需要信任一个hgrc文件。如果您拥有/project_path/project_name/.hg/.hgrc
文件,那么当您运行Mercurial时hg serve
运行,因为它已被解析/使用。但是,nginx作为自己的用户运行,可能是nginx
,它不信任您拥有的文件,因此当它调用Mercurial时,这些文件将被忽略(参见注释)。
Mercurial信任链接提供了更好的解释并讨论了如何说“nginx信任X”,但如果它是单用户系统或者你希望每个人都信任你,你可以在系统中抛出一个信任块/etc/mercurial/hgrc
文件说每个人都信任X.
注意:它实际上并没有忽略那些在STDERR上发出警告的文件,这些文件在你在error.log中找到的apache-land中,但是在nginx土地上似乎没有人能找到那些警告所以我'我不知道nginx把它们放在哪里。
答案 1 :(得分:0)
我假设您在此处遇到某种身份验证问题。从命令行运行hg serve
时,您的ssh凭据由在后台运行的ssh-agent
提供。
但是,将hgweb作为服务运行时,这不起作用,因为后台没有运行ssh-agent。如果您要启动ssh-agent
,则无法输入ssh密钥的密码。
Bitbucket使用ssh密钥对您进行身份验证,因此您不能只将密码添加到上述hg push
命令中。
一种可能的解决方案是不使用bitbucket作为备份,而是使用不同的mercurial服务器,让您在命令行上提供简单的密码。
我担心我无法帮助你进一步解决这个问题。