在PHP脚本中,我在本地创建了文件夹和文件,希望将它们放到SVN中。我使用一个包含svn import PATH/TO/MY/FOLDERS/AND/FILES的.cmd文件,它可以正常工作。在svn导入成功之后,我想删除我刚刚在本地使用相同的.cmd-script放入SVN的文件夹。所以我必须这样说(伪代码)
if(svn import PATH/TO/FOLDERS == successful){delete PATH/TO/FOLDERS locally}
这样的事情有可能发生吗?我不太了解.cmd-scripting,所以如果我的问题很愚蠢,请原谅。
发布于 2013-09-19 20:40:48
SVN导入成功返回0,错误返回非零值。符合POSIX的外壳将能够解释这一点,这样您就可以编写类似于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秒钟的googling搜索没有找到任何东西。这是非常值得的;它将使您的错误消息更具可读性。
同样值得注意的是,使用system()会使您的代码本质上不可移植。使用PHP's SVN functions可能更好。
https://stackoverflow.com/questions/18893013
复制相似问题