基本安装步骤
#--------------------------------------------------------安装 yum -y install subversion #创建版本库 mkdir /var/svn/myproject svnadmin create /var/svn/myproject #--------------------------------------------------------开始配置 #创建两个账号:xiaobai和xiaohuang vim /var/svn/myproject/conf/passwd [users] xiaobai=xiaobai1214 xiaohuang=xiaohuang1976 #定义用户,组,权限关系 vim /var/svn/myproject/conf/authz [groups] mygroups=xiaobai,xiaohuang [/] @mygroups=rw #svn的主配置,禁止匿名用户访问SVN,仅允许通过验证的用户进行操作 vim /var/svn/myproject/conf/svnserve.conf anon-access=none auth-access=write realm=欢迎访问myproject项目-SVN系统 #-------------------------------------------------------启动 # 参数r:指定版本库位置 svnserve -d -r /var/svn/myproject #或者直接 vim /etc/init.d/svnserve args="--daemon --log-file=/var/log/svnserve.log --pid-file=${pidfile} -r /var/svn/myproject $OPTIONS" #然后 service svnserve start #开机启动:写入/etc/rc.local文件即可或者 chkconfig svnserve on #客户端连接检出时仅需 svn://ip地址
多项目,多版本库
比如创建多个项目
#创建多个项目 mkdir /var/svn/project1 svnadmin create /var/svn/project1 mkdir /var/svn/project2 svnadmin create /var/svn/project2
启动参数r需要做调整:
svnserve -d -r /var/svn
客户端访问时的链接就要在ip后面加上版本库名称了:
#访问版本库project1 svn://ip地址/project1 #访问版本库project2 svn://ip地址/project2
使用Hook文件实现即时同步
此功能简言之:提交svn时,自动把文件更新到网站目录。
配置很简单,subversion自带了模板文件:/var/svn/project1/hooks/post-commit.tmpl
将此文件重命名为post-commit,在commit操作后将自动调用此文件。
mv /var/svn/project1/hook/post-commit.tmpl /var/svn/project1/hook/post-commit vim /var/svn/project1/hook/post-commit #内容为: CURDATE=`date` webdata=/var/www/html/project1 echo "Code Deployed By at $CURDATE" >> /var/svn/postcommit.log /usr/bin/svn update $webdata --username 用户名 --password 密码 --no-auth-cache >> /var/svn/postcommit.log #修改post-commit权限 chmod 645 post-commit
配置完成后,需要先导入一份网站文件到svn中,然后co(checkout)到/var/www/html/project1中,这样客户端在commit时,postcommit才能生效。
#客户端提交可以使用流行的王八壳,右键导入 #导入完成后,在服务器上,运行checkout命令,将网站文件检出到web目录 svn checkout svn://ip /var/www/html/project1 --username 用户名 --password 密码
此后,客户端的文件变化后,右键commit,将自动把更新的文件,update到网站目录。
ps:此功能虽然不错,但是风险很高,万一提交错了,少提交文件,就有可能使网站出现不可预知的错误。
某一天你发现网站有问题,检查了半天,原来是少提交一个文件!
另外,如果有多个管理员在使用这个svn,当提交时,出现冲突之类的问题,那就麻烦了,post-commit将执行失败,网站更新过程将卡在半路…
本人亲身体验此功能带来的麻烦,so暂停了服务器上的svn。