[文章作者:张宴 本文版本:v1.0 最后修改:2008.10.06 转载请注明原文链接:http://blog.s135.com/read.php/371.htm]

  今天花几分钟写的一个PHP小程序,用途是:无需给程序员开放服务器SSH帐号,只需通过Web浏览器即可从SVN版本库更新代码到Linux服务器的指定目录。如果有需要,可以给这段代码加个密码登录。

  1、假设www、www是Apache或Nginx服务器的用户名和组,/data0/www/是网页文件存放根目录,执行以下shell命令:
sudo -s
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
mkdir -p /data0/www/
chown -R www:www /data0/www/
su www
cd /data0/www/
/usr/local/bin/svn checkout --username zhangyan --password 123456 http://xxx.xxx.xxx.xxx:8080/svn/web/trunk/


  2、创建文件svn_up.php:

  3、通过浏览器访问svn_up.php,显示以下内容(例):
  U    /data0/www/app/DataTransferService.php
  Updated to revision 561.



Tags: , ,
技术大类 » 其他Unix技术 | 评论(10) | 引用(0) | 阅读(7996)
xi2008wang
2008-10-6 23:45
沙发, 这次看懂了zan
ohyeah
2008-10-7 21:44
感谢分享~

$handle = popen(\'/usr/local/bin/svn up --username zhangyan --password 123456 /data0/www/*\', \'r\');

后面的那个 * 没有必要加上吧?

有你blog在firefox下alert提示是乱码的
jason
2008-10-8 09:22
会不会产生.svn文件夹?
cloudchen
2008-10-8 11:12
用svn export就不会有.svn目录了
starhycold
2008-10-9 10:05
小技巧, 但是挺实用的.
larryli
2008-12-17 11:18
用 svn 钩子更方便
post-commit 监视指定目录,然后 up 就可以了
pl
2009-7-13 21:08
如果svn服务器与拷贝不在一起,钩子不会用。
烨勇
2010-1-19 11:08
我为什么在网页里不输出任何信息

<?php
$handle = popen('/usr/bin/svn update --username *** --password *** /data/nginx/htdocs/','r');
$read = stream_get_contents($handle);
echo "<pre>";
printf ($read);
echo "</pre>";
//pclose($handle);
?>
Jason-MT
2010-2-9 09:31
@烨勇
你有没先做/usr/local/bin/svn checkout --username zhangyan --password 123456 http://xxx.xxx.xxx.xxx:8080/svn/web/trunk/
这一步,作了这一步后,往后你调update命令,svn会知道去那个源取代码来更新!
游客
2010-3-5 15:07
烨勇 2010-1-19 11:08
我为什么在网页里不输出任何信息

遇到错误中断了,没执行到现实内容的那行代码
看看错误日志,肯定报错了
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]