在我的 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 了解不多,所以如果它很愚蠢,请原谅我的问题。
问问题
83 次
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 回答