引言
在Linux服务器上搭建svn服务,网上有很多,杂七杂八混在一起,找到一篇详细点的好文章不易于大海捞针啊,只好自己动手,丰衣足食,以备不时之需,也希望能帮助更多的人!特记录如下,以 centos 为例
一、测试svn是否安装
rpm -qa subversion 如果安装输入之后会出安装的版本,也可以通过 svnserve --version 查看版本来确定
二、如果安装查看svn的仓库信息
ps -aux | grep svnserve 可以查看版本仓库的信息,例如各仓库的路径、端口等
三、如果没有安装svn
yum -y install subversion 这里为了简便直接使用yum安装,源代码编译安装后续会加上
四、检查svn是否成功安装
svnserve --version 通过查看版本号确定是否安装成功了
成功安装之后会在 /usr/bin 目录下生成几个二进制文件分别为 svn、svnadmin、svndumpfilter、svnlook、svnserve、svnsync、svnversion
命令用法都可以用命令加 --help 查看,如 svn --help
五、创建版本库目录
mkdir -p /www/svndata/svnname 建立版本库目录
svnadmin create /www/svndata/svnname 建立svn版本库(就是上面建立的目录)
建立版本库时,如果已有运行的svn仓库,请把版本库建立在已运行的仓库中,不然就需要加端口启动和链接了
六、配置svn
vi /www/svndata/svnname/conf/svnserve.conf 编辑上面建立的版本库中的配置文件
只修改下面列出配置即可
[general]
anon-access = none # 禁止非授权用户访问
auth-access = write # 给授权用户拥有写权限
password-db = /www/svndata/svnname/conf/pwd.conf # 用户密码文件路径
auchz-db =/www/svndata/svnname/conf/authz.conf # 用户授权文件
realm = svnname # 认证命名空间,subversion会在认证提示里显示,且作为凭证缓存的关键字
--------------------------------------------------------------------------------------
vi/www/svndata/svnname/conf/pwd.conf 编辑用户密码文件(如在 conf 下不存在pwd.conf 请自己创建)
[users] # 在这行下面编辑,格式如下,一行一个
user1 = pwd1
user2 = pwd2
user3 = pwd3
user4 = pwd4
--------------------------------------------------------------------------------------
vi/www/svndata/svnname/conf/authz.conf 编辑用户授权文件(如在conf下不存在authz.conf请自己创建)
可按组授权
[groups] # 在这行下面编辑,格式如下,一行一组,每组中用户名以逗号分隔
group1 = user1,user2
group2 = user3,user4
[svnname:/log] # 对项目路径 /log 设置权限。组group1 有读写权限,组group2 有读权限。svnname:/ 可以理解为项目根目录
@group1 = rw
@group2 = r
[svnname:/upload] # 对项目路径 /upload 设置权限。组 group1 有读写权限,其余人有读权限。* 表示排除组 group1 的其他人
@group1 = rw
* = r
或给用户直接授权
[svnname:/] # 表示项目根目录,也可直接写 [/]
user1 = rw
user2 = rw
user3 = r
user4 = r
注:如果项目不需要配置的这么复杂,就几个人协同开发的话,就直接给 [svnname:/] 或 [/] 设置权限即可
到此,svn配置部分已经搞定,可以小小兴奋一下了~~
七、启用svn仓库
svnserve -d -r /www/svndata/
八、导入文件到版本库
svn import mytree file:///www/svndata/svnname/some/project -m "Initial import" mytree 是要添加的目录
九、客户端链接检出
链接地址为 svn://服务器ip/版本名
十、数据同步到web目录
原理是当客户端 svn commit 时会触发 post-commit 插件钩子,在 /www/svndata/svnname/hooks/ 下面有很多插件钩子,把 post-commit.tmpl 复制一份名称改为 post-commit 并清空里面代码,加入以下代码
#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username user1 --password pwd1 /www/svnname --no-auth-cache
插件钩子做好了,但这样还不行,因 /www/svnname 与版本库不对应,这时必须执行以下代码检出,才可以保证两个版本相同
cd /www 切换到放置 web 的根目录
svn co svn://svn服务IP/svnname 检出文件到web目录
这样就可以当程序员提交文件到版本库自动备份到web目录了~~~,吼~~~~~
至此,svn配置就全部搞定!啦啦啦~~~~啦啦啦~~~~~
十一、结束语
累、好累、非常累。。。。。
注:转载请注明出处。如有不正确之处请指出!