保证svn服务器和web服务器同步更新

为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,打开版本库的hooks目录,可以看到有一个post- commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit里面原有的代码全部注释掉.这里可以执行shell 命令,每次commit完成后都会调用此文件.

我的文件内容为

#!/bin/sh  
export LANG=zh_CN.GBK
/usr/bin/svn update --username svn账户用户名 --password svn账户密码 /var/www/linuxphp

说明:

#!/bin/sh   说明是执行shell命令

 export LANG=zh_CN.GBK   是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为GBK编码,SVN默认是UTF-8编码,如果不设置将会出现错误,而执行不成功,错误标识为svn: Can't convert string from native encoding to 'UTF-8'

svn钩子使用说明:http://www.ceallan.com/?p=206

/usr/bin/svn update --username keminar--password 123456 /var/www/project   执行更新操作

还有一些其它基本说明 http://bbs.iusesvn.com/viewthread.php?tid=350&extra=&page=1

 附加:调试时可以在linux服务器上checkout两个副本,在linux上调试,可以看到没有成功同步的错误信息.

 

附加步骤:

1、在库文件的hooks下新建post-commit文件。
2、在post-commit文件里添加
#!/bin/sh
SVN=/usr/local/subversion/bin/svn
WEB=/var/htmlwww/test
export LANG =en_US.UTF-8
chmod -R 777 /usr/local/www
$SVN update --username user --password Password file:///usr/local/subversion/repos/web/ $WEB
3、修改权限:
chown -R daemon.daemon /var/htmlwww/test
chmod -R 777 /var/htmlwww/test
chown -R apache.apache /usr/local/subversion/repos/web/hooks/post-commit
chmod -R 777 /usr/local/subversion/repos/web/hooks/post-commit
注意:第一次更新需要先把数据库先检索出来,执行脚本./post.commit
#!/bin/sh
export LANG=en_US.UTF-8
SVN=/usr/local/subversion/bin/svn
WEB=/www
$SVN checkout  file:///usr/local/subversion/repos/web/  $WEB

你可能感兴趣的:(SVN,同步,web服务,休闲,同步更新)