欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

执行php脚本自动更新svn代码到测试服务器

程序员文章站 2022-06-11 10:06:57
...

我们可能在A服务器部署了svn服务 管理svn 我们又可能在B服务器部署了web项目 现在我们想着当本地提交代码到A服务器之后
通过访问一个连接地址自动去同步svn代码到B服务器的web站点 该如何实现呢?

想说写一个通过网页就可以执行 SVN 升级的程序,结果并不是我想得那样简单,有一些眉角需要注意的说。 先以 nginx 的用户帐号执行
svn checkout,这样 nginx 才有 SVN 的链结权力,才可以通过网页执行 svn update 复制代码 代码如下:

su -s /bin/bash www-data    
cd /var/www   
svn checkout http://www.xxx.com/svn/my_site  

在用 PHP 执行 shell 指令前要加上 export LANG=C.UTF-8 的环境声明,不然 SVN update
时遇到中文会出现 error,Ubuntu 的 Apache 默认是 LANG=C 接着要为 SVN 补上 --accept
theirs-full 的参数,这是当冲突发生时,都以 SVN Server 的文件版本为主 最后再加上 2>&1,让 PHP
可以取得包含错误的所有信息 复制代码 代码如下:

<?php    
putenv('LANG=C.UTF-8');
//$result = shell_exec('svn update --accept theirs-full /var/www/edusoho 2>&1');
//echo nl2br($result);
$username = 'huj';
$password = '111111';
$target_dir = 'svn://10.10.20.179/edusoho';
$result = shell_exec("svn up --username $username --password $password --accept theirs-full /var/www/edusoho 2>&1");
echo nl2br($result);
?>