php - 在 Windows 和 Linux 机器上通过 Web 表单更新 SVN

标签 php svn

我已经为此工作了一段时间,但找不到解决方案(如果有的话)。

所以问题是:有没有办法通过 HTML 网络表单执行 svn update 请求?

我已经测试了多个基于 Web 的 SVN 客户端(包括构建我自己的),但它们都缺乏进行更新的可能性。

我知道这是 PHP 使用的用户权限的问题,但即使我将系统上的所有文件设置为 777(在虚拟机上试过),仍然没有我可以存档它的方式。

谁有这方面的经验?

已经谢谢你了。

我还查看了所有目录并将所有者设置为具有完全访问权限的Everyone。现在不会有权限问题......我想。

上次编辑: 如果脚本文件不在 svn 目录的根目录中,我似乎无法执行 SVN。最终代码现在如下所示:http://codepad.org/Kb2K8e6m

最佳答案

下面的函数应该或多或少地为你做了。它还打印出:

  1. 它在 shell 中执行的确切命令
  2. 命令的输出(包括错误)以便它也可以被调试。

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/

相关文章:

php - 为什么要扩展一个类而不是仅仅向原始类添加一个新方法?

php - 合并两个 PHP 对象的最佳方法是什么?

php - 将数组与数据库进行比较

svn - 如何配置 TortoiseSVN 的外部合并行为?

php - 在 PHP 中获取多个数字的比率的最简单方法是什么?

php - 卡在wampserver : it is in yellow mode

svn - _M 在 svn status 结果中是什么意思

svn - 有关使用 TortoiseGit 与 SVN 存储库交互的说明?

svn - 在 Subversion 中接受工作副本 “as is”

svn - 如何列出所有提交到存储库的文件?