使用PHP将文件提交到SVN - 一个函数,两个页面和两个不同的结果

时间:2012-03-15 12:11:06

标签: php svn

我的问题是我使用两个不同的页面(位于不同的文件夹中)调用相同的函数并获得两个不同的结果。目标是在textarea中提交内容,将其保存到文件中,然后提交此文件。

这是我的文件结构

\svntest\folio\00123\svn.php
\svntest\folio\00456\my_file.php
\svntest\test.php
\svntest\svncmd\commit.bat

commit.bat的内容

svn ci -m "hello" %1

\ svntest \ folio \ 00123 \ svn.php的内容:

if($_POST){

    if( strlen($_POST['show_revision']) ){

        $f = dirname(__FILE__);
        $f .= '\\..\\..\\'.$file;
        svn_save_file($_POST['show_revision'], $f);

        svn_commit_file();
    }

    //header('location: svn.php');
}


<form method="post">
<fieldset><legend>Page Content</legend>
<div>
<textarea cols="50" rows="10" id="txtarea" name="txtarea"></textarea>
</div>
<div><input type="submit" value="Save"/></div>
</form>

\ svntest \ test.php的内容:

svn_commit_file();

函数svn_commit_file():

function svn_commit_file(){
    $cmd = '"C:\\Documents and Settings\\me\\Desktop\\xampp\\htdocs\\xampp\\LearnPHP\\svntest\\svncmd\\commit.bat" "folio\\00456\\my_file.php"';
    $out = system($cmd, $r);
}

什么行不通

file:\ svntest \ folio \ 00123 \ svn.php

结果:没有svn提交消息,没有任何内容从system()调用...

输出

什么有用

file:\ svntest \ test.php

结果:获取svn commit消息并将版本添加到SVN

由于svn_commit_file()中的所有内容都是硬编码的,因此无法确定问题所在。

2 个答案:

答案 0 :(得分:2)

我认为您应该为要检入的文件指定绝对路径。当前工作目录在test.phpfolio\00123\svn.php之间有所不同。

function svn_commit_file(){
    $cmd = '"C:\\Documents and Settings\\me\\Desktop\\xampp\\htdocs\\xampp\\LearnPHP\\svntest\\svncmd\\commit.bat" "C:\\Documents and Settings\\me\\Desktop\\xampp\\htdocs\\xampp\\LearnPHP\\svntest\\folio\\00456\\my_file.php"';
    $out = system($cmd, $r);
}

答案 1 :(得分:0)

可能是路径问题

通过$_SERVER['DOCUMENT_ROOT']函数中的svn_commit_file()

svn_commit_file($_SERVER['DOCUMENT_ROOT']);

基于这个完整的物理路径运行svn commit命令...可能正常工作

感谢