简单脚本实现通过浏览器更新SVN。
header("Cache-Control:no-cache,must-revalidate");
$handle = popen('export LC_CTYPE=en_US.UTF-8 && /usr/bin/svn up --username user_test --password pass_test /data1/svn_repo 2>&1', 'r');
$read = stream_get_contents($handle);//需要 PHP5 或更高版本
echo "
"; printf($read); echo "
";
pclose($handle);
途中踩了两个坑:
1.svn 有中文文件名
export LC_CTYPE=en_US.UTF-8 解决此问题
2.命令返回1,但是没有错误显示
2>&1 解决此问题
3.运行此命令要保证运行PHP的服务程序用户具有读写权限
省事的做法是通过此程序直接checkout一份。