我有一小群开发人员,我们都在自己的机器上开发。当我们有准备好进行测试的代码时,我们合并并推送到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。
思想?
答案 0 :(得分:1)
答案 1 :(得分:0)
对于那些关注这个问题的人来说,这就是我解决它的方法:
使用执行此代码的按钮在PHP中编写了一个passworded页面:
shell_exec('hg pull -R ../wp-content/themes/2014');
然后我将hg更新放在prod网站的hgrc文件中,并成为存储库的Web用户和授权用户。
它工作得很好 - 由于产生的文件所有权,我有轻微的安全问题,但假设PHP遵循正确的做法,没有任何问题。