我已经为此工作了一段时间,但找不到解决方案(如果有的话)。
所以问题是:有没有办法通过 HTML 网络表单执行 svn update
请求?
我已经测试了多个基于 Web 的 SVN 客户端(包括构建我自己的),但它们都缺乏进行更新的可能性。
我知道这是 PHP 使用的用户权限的问题,但即使我将系统上的所有文件设置为 777
(在虚拟机上试过),仍然没有我可以存档它的方式。
谁有这方面的经验?
已经谢谢你了。
我还查看了所有目录并将所有者设置为具有完全访问权限的Everyone
。现在不会有权限问题......我想。
上次编辑: 如果脚本文件不在 svn 目录的根目录中,我似乎无法执行 SVN。最终代码现在如下所示:http://codepad.org/Kb2K8e6m
最佳答案
下面的函数应该或多或少地为你做了。它还打印出:
- 它在 shell 中执行的确切命令
- 命令的输出(包括错误)以便它也可以被调试。
function updatesvn() {
if ( isset($_POST) ) {
//Get svn username and password from request parameters
$username = <your_svn_username>;
$password = <your_svn_password>;
//Get version number to move to
$values = $_POST;
$version = $values['revision'];
//validate version number
//Path where you have checked out your project
$rpath = '/var/www/myproj';
//Command to svn update
$cmd = "cd $rpath; svn cleanup; svn --non-interactive --username $username --password $password update -r $version 2>&1";
echo $cmd;
$out = shell_exec($cmd);
echo $out;
}
}
编辑:当心此代码中的安全漏洞。我在这里简化了它。我们曾在我们的一个应用程序中使用过它,在该应用程序中,达到这一点的用户被预先验证为 Web 应用程序的 Admin
用户。此外,这段代码是在 MVC 框架中执行的,在该框架中,输入验证在 Controller 中执行操作之前在中心位置完成。
关于php - 在 Windows 和 Linux 机器上通过 Web 表单更新 SVN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754277/