在《搭建svn服务项目并且同步代码到项目目录》这篇文章中,我们简单介绍了使用svn将提交的代码同步到工作目录的实现方法。但是这里有一个问题,就是svn服务和我们的工作目录是在同一台服务器上面的。如果说我们的应用采用分布式部署的话,那岂不是在每一台应用服务器上面都部署svn服务,并且需要多次提交相同的代码。
本章我们就来介绍两种远程同步代码的方式
在hooks中使用scp命令进行远程同步
svn服务器:192.168.5.201
应用服务器:192.168.5.200
在这里我们需要借助scp远程拷贝文件命令。还有我们需要在5.201主机上面新建/STest目录,并且在该目录下检出一份代码。
# mkdir /STest
# cd /STest
# svn checkout svn://192.168.5.201 –username svnuser –password svnuser123
每次提交更新以后,我们先使用之前在一台服务器上面同步代码的方法更新到/STest目录下,然后利用svnlook changed 命令查看更新的文件(其实这里就是在查找/STest目录下更新的文件),最后再利用scp命令将/STest目录下更新的文件拷贝到5.200上对应的目录下。
在hooks目录下面新建post-commit文件,添加如下shell代码
#!/bin/bash
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN=/usr/bin/svn
SVNLOOK=/usr/bin/svnlook
WEB=/App