0

我有一小群开发人员,我们都在自己的机器上开发。当我们有准备好测试的代码时,我们合并并推送到 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 管理员能够推送到 prod 而无需在服务器上访问 shell。有没有办法让某人从 RhodeCode 界面运行“hg push prod_env”?我认为既然 RhodeCode 可以完全控制 hg,那应该是可能的,但是这种能力是否存在于 RhodeCode 的某个地方?添加它会是一项艰巨的任务吗?

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

想法?

4

2 回答 2

1

显然,你不能什么都不推。但是您可以尝试从 prod_env 的 RhodeCode 界面(允许这样做)添加或编辑一些文件。这应该会导致本地提交和推送,而无需访问 shell。

于 2014-01-15T19:19:36.337 回答
0

对于那些看这个问题的人,我是这样解决的:

用 PHP 编写了一个带有执行此代码的按钮的密码页面:

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

然后我将 hg update 放入 prod 网站的 hgrc 文件中,并设置存储库的 web 用户和授权用户。

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

于 2014-01-25T10:43:52.900 回答