从Web界面推送到配置的hg存储库

时间:2012-10-25 13:23:58

标签: mercurial hgrc rhodecode

我有一小群开发人员,我们都在自己的机器上开发。当我们有准备好进行测试的代码时,我们合并并推送到RhodeCode安装。我的中央RhodeCode仓库的hgrc文件设置如下:

[paths]
test_env = /www/mysite/test
prod_env = /www/mysite/prod
[hooks]
changegroup = hg push test_env

所以当一个人将代码检入RhodeCode时,更改会自动推送到测试环境。 (测试repo hgrc文件中有一个hg更新,因此代码在那里更新)。这很完美。

但是我希望我们的RhodeCode管理员能够在不需要服务器上的shell访问的情况下推送到prod。有没有办法允许某人从RhodeCode界面运行“hg push prod_env”?我认为,因为RhodeCode完全控制了hg,它应该是可能的,但是这种能力是否存在于RhodeCode的某个地方?添加它会是一项艰巨的任务吗?

如果没有,您将如何允许经过身份验证的用户将存储库推送到生产而无需shell访问?我一直在谷歌搜索,但我似乎找不到任何东西。我知道我可以用passthru编写一个php脚本(“hg push test_env”),但这似乎是权限噩梦,因为apache运行为“nobody”而rhodecode拥有repo。

思想?

2 个答案:

答案 0 :(得分:1)

显然,你什么都不能推。但您可以尝试在prod_env中添加或编辑RhodeCode接口(允许这样做)中的某些文件。这应该导致本地提交和推送而不访问shell。

答案 1 :(得分:0)

对于那些关注这个问题的人来说,这就是我解决它的方法:

使用执行此代码的按钮在PHP中编写了一个passworded页面:

shell_exec('hg pull -R ../wp-content/themes/2014');

然后我将hg更新放在prod网站的hgrc文件中,并成为存储库的Web用户和授权用户。

它工作得很好 - 由于产生的文件所有权,我有轻微的安全问题,但假设PHP遵循正确的做法,没有任何问题。