在我的PHP脚本中,我在本地创建文件夹和文件,我想放入我的SVN。我使用包含svn import PATH/TO/MY/FOLDERS/AND/FILES
的.cmd文件,该文件没有问题。
在svn导入成功后,我想删除我刚刚使用相同的.cmd脚本在本地放入SVN的文件夹。所以我不得不说(伪代码)
if(svn import PATH/TO/FOLDERS == successful){delete PATH/TO/FOLDERS locally}
这样的事情甚至可能吗?我不太了解.cmd脚本,所以请原谅我的问题,如果它是愚蠢的。
答案 0 :(得分: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's SVN functions。