1


在我的 PHP 脚本中,我在本地创建要放入 SVN 的文件夹和文件。我使用包含 .cmd 的文件svn import PATH/TO/MY/FOLDERS/AND/FILES,它可以正常工作。svn导入成功后,我想用相同的.cmd脚本在本地删除我刚刚放入SVN的文件夹。所以我不得不说类似(伪代码)
if(svn import PATH/TO/FOLDERS == successful){delete PATH/TO/FOLDERS locally}
这样​​的事情甚至可能吗?我对 .cmd-scripting 了解不多,所以如果它很愚蠢,请原谅我的问题。

4

1 回答 1

0

如果成功,SVN 导入将返回 0,错误时返回非零。一个 POSIX 兼容的 shell 将能够解释这一点,以便您可以编写类似svn import PATH/TO/FOLDERS && rm -rf /PATH/TO/FOLDERS.

PHP 的 system() 函数接受第二个参数——一个返回值,它将在 system() 被调用时设置:

$svncmd = 'svn import PATH/TO/FOLDERS'
system( $svncmd, $retval);
if( $retval != 0 ) {
    $rmcmd = 'rm -rf PATH/TO/FOLDERS'
    system( $rmcmd, $retval);
    if( $retval != 0 ) {
         echo '"' . $rmcmd . '" failed and returned '"' . $retval . '"';
    }
} else {
    echo '"' . $svncmd . '" failed and returned '"' . $retval . '"';
}

我认为我倾向于将调用system()和以下错误消息包装在一个函数中,以使代码更简洁。

Perl 有一个名为的特殊值$!,它包含由system()或其亲属返回的任何错误消息的文本。我确信 PHP 有类似的东西,但我 5 秒的谷歌搜索没有找到任何东西。非常值得一看;它将使您的错误消息更具可读性。

还值得注意的是,使用 system() 使您的代码本质上是不可移植的。使用PHP 的 SVN 函数可能更好。

于 2013-09-19T12:40:47.683 回答