基于SVN的快速开发发布环境搭建

来源:互联网 发布:linux find当前目录 编辑:程序博客网 时间:2024/05/26 17:48

     本人在几家互联网公司工作过,公司的代码管理基本都是基于svn,开发环境各有不同,从最原始的直接ssh到测试服务器修改代码,或者是本地修改,然后通过ftp或者sftp上传到服务器,这样的代码发布方式会有比较多的问题,第一多人合作的时候代码容易相互覆盖,第二是对测试环境的代码修改无法追踪,一个人对测试环境代码的修改别人无法快速定位。然后后来接触到了基于svn的发布系统,有用过SAE的同学应该有感觉,SAE提供的就是基于SVN的代码管理和发布环境,非常方便和实用,本文就将介绍一下如何手动搭建这样一个开发环境。

    首先搭建安装svn服务器。

    源码包官网地址:http://subversion.apache.org/download/#recommended-release

    解压缩之后直接源码安装

    ./configure

    make&make install

    svn的server有两种方式可以对外提供服务,一个是本身自带一个svnserve程序,启动之后就是一个后台程序,走的是自己的协议,也可以通过apache,把svn安装为apache的模块,通过http或者https协议对外提供服务。

   我们这里就直接用自带的svnserve。

   安装完整之后,首先创建版本仓库:svnadmin create /home/user/testsvn

  /home/user/testsvn可以修改为你自己的路径,这就是svn的版本仓库根目录,svn服务器的配置文件,已经后续你提交到svn的数据文件都会存储在这个目录下。

 运行完上述命令之后,testsvn目录中应该就会多了一些目录和文件,进入conf/目录,打开passwd文件,添加svn用户名密码:

[users]
username= password

conf/authz是访问权限控制配置

[groups]
admin=username
harry_sally_and_joe = harry,sally,&joe

[testsvn:/]
@admin = rw

然后配置svnserve.conf

[general]

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

然后就是如何配置让svn可以自动发布代码,这里涉及到了svn的hook机制,就是所谓的钩子,在/home/user/testsvn目录下可以看到有一个hooks目录,进入到这个目录

可以看到很多post-commit.tmpl 这样的文件,这些都是hook文件的模板,每个文件都对应一种hook方式

可以cp post-commit.tmpl post-commit

post-commit其实就是一个shell文件,每次svn有新的commit操作时,svn服务器都会运行该文件,所以文件头部要加上:

#!/bin/sh

然后chmod u+x post-commit,保证该hook脚本可执行。

在post-commit中添加如下一行代码:

SVN_PATH/svn update /code/ --username=tttt --password=1111--non-interactive

当然前提是在/code/目录已经svn co 过了,当然可以先check一下该目录的svn状态,如果没有初始化过,先svn co,然后再update。


配置文件都配置完成以后启动svn服务

svnserve -d -r /home/user/testsvn --listen-port 8890


这样,在自己的机器上,通过svn://ip:8890/就可以check出代码,然后向该svn提交代码时,你提交的代码会自动同步到服务器的/code/目录



1 0