首先 确保 你的svn 可以使用
第一步:把svn项目导入到你的 线上地址
1,我的svn 项目地址 svn checkout svn://localhost/code/php/CheckWork
2,我的线上项目 地址 为 /webservice/www/www.onLine
cd 到 /webservice/www/www.onLine 目录下
然后把svn 上的项目 checkout 到 这个目录下 CheckWork是需要同步的项目
例:
第二步:在 svn 项目库的 hooks/ 目录下新建 post-commit 文件
如:
1:/webservice/www/www.svnWork/workSpace 是我的svn 版本库地址
2:vim /webservice/www/www.svnWork/workSpace/hooks/post-commit
在这个文件中 写入:
#!/bin/sh #说明是执行shell命令
exportLANG=en_US.UTF-8
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/webservice/www/www.onLine/CheckWork #要更新的目录地址
$SVN update$WEB--username root --password root123 #你的svn 用户名称和密码
chown-Rwww:www$WEB
如:
第三步:让post-commit有执行的权限
chmod a+x post-commit
第四步:这里就已经完成了,第四步就是测试了。
说明:
export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为
1
svn: Can't convert string from native encoding to 'GBK'
/usr/bin/svn update --username cqh --password 123456 /var/www/html/test 执行更新操作
如果提示:
1
post-commit hook failed (exitcode 255) with no output
赋予post-commit文件可执行权限
如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交
这个 时候 只要你svn 代码 更新 那么你线上环境的 代码 也更新了
网友评论
Skipped 'var/www/html/test'
Summary of conflicts:
Skipped paths: 1
我的post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export LC_ALL=en_US.UTF-8
export LANG=zh_CN.UTF-8
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
#CURDATE = date
echo "Code to by at $REPOS $REV" >> /var/www/html/test/a.log
#这里配置的是svn安装bin目录下的svn文件
SVN=/usr/bin/svn
#要更新的目录
WEB=/var/www/html/test
svn update --username 100m --password 100m $WEB >> /var/www/html/test/c.log
chmod 777 -R $WEB
echo "Code to by at $REPOS $REV" >> /var/www/html/test/b.log
请帮忙看看什么问题,日志都能生成