centos 安装 svn

1.svn简介
Subversion是新一代的版本控制工具,不仅仅应用于程序源代码管理,也可以广泛应用于其他需要协作管理数据的工作。作为CVS 的重写版和改进版,其目标就是作为一个
更好的版本控制软件,取代目前流行的CVS。个人是比较倾向于使用git的,不过公司里的开发们都喜欢用svn,那就给他们部署了svn。下面开始安装。

2. 安装
源码编译太麻烦,还是rpm包方便,直接使用yum安装即可。

yum install -y subversion

3. 创建仓库
svnadmin create /PATH/pro
pro为项目名称,/PATH/可写也可以不写,不写时候会在执行命令的当前目录生成pro目录,建议还是写绝对路径,起码自己清楚。
仓库创建完成后,生成的目录结构如下:
pro
├── conf
│   ├── authz
│   ├── passwd
│   └── svnserve.conf
├── db
│   ├── current
│   ├── format
│   ├── fsfs.conf
│   ├── fs-type
│   ├── min-unpacked-rev
│   ├── rep-cache.db
│   ├── revprops
│   │   └── 0
│   │   └── 0
│   ├── revs
│   │   └── 0
│   │   └── 0
│   ├── transactions
│   ├── txn-current
│   ├── txn-current-lock
│   ├── txn-protorevs
│   ├── uuid
│   └── write-lock
├── format
├── hooks
│   ├── post-commit.tmpl
│   ├── post-lock.tmpl
│   ├── post-revprop-change.tmpl
│   ├── post-unlock.tmpl
│   ├── pre-commit.tmpl
│   ├── pre-lock.tmpl
│   ├── pre-revprop-change.tmpl
│   ├── pre-unlock.tmpl
│   └── start-commit.tmpl
├── locks
│   ├── db.lock
│   └── db-logs.lock
└── README.txt

4. 修改配置文件
仓库的配置文件如下:
conf
├── authz #用户权限配置文件
├── passwd #用户账号密码配置文件
└── svnserve.conf #仓库配置文件

修改 svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
注意: 所有的行都必须顶格,否则报错。

修改passwd
[users]
harry = harryssecret
sally = sallyssecret
注意:如果[users]之前的有‘#’,那么svn只能使用匿名登录;这里的密码全部为明文。

修改authz ,在[group]下配置用户的分组和对不同目录的访问权限
[groups]
admin = li #设置分组,admin组,包含用户 li
dev = long,ning #设置分组,admin组,包含用户 long,ning 不同用户使用都好分隔

[pro:/] #设置仓库pro的根目录权限,admin组有度读写权限,*= 设置其他人不能访问,*=中间不要有空格,不然会出问题。
@admin = rw
*=

[pro:/dev] #设置仓库pro下dev目录权限,dev组有度读写权限,*= 设置其他人不能访问,*=中间不要有空格,不然会出问题。
@dev = rw
*=

5. 启停svn
单仓库:
启动: svnserve -d -r /PATH
停止: kill -QUIT `ps aux |grep svn|grep -v grep|awk ‘{print $2}’`

多仓库:
因为大多数的时候,同一个用户需要用相同的帐号和密码去访问不同的版本库,这时的权限配置就不好处理了,以前看其他人的解决方法是在svnserve.conf中指定
passwd和authz的路径时用相对路径指到同一个文件。这是一个可行的方法,但新增版本库的时候,就得更改svnserve.conf文件,不方便。
仔细看svnserve的帮助信息,大家都会发现有一个–config-file参数,这个参数就是用来指定svnserve.conf路径的,说到这,问题已经明了,只要在启动SVN服务的时候
,指定–config-file参数,只要指定了此参数,所有的权限都由参数指定的svnserve.conf控制,而每个版本库conf目录下的svnserve.conf的配置都会忽略掉,具体启动
参数如下
svnserve -d -r /PATH –config-file /PATH/svnserve.conf
因为我们是使用yum安装的svn,查看/etc/rc.d/init.d/svnserve 服务启动脚本会发现 脚本会先判断是否存在/etc/sysconfig/svnserve文件,如果存在就会导入这个文
件,所以我们只要把配置信息写在这里,就可以方便管理多个版本库,当然,指定到其他位置也可以,修改脚本即可。
#vim /etc/sysconfig/svnserve
OPTIONS=”-r /data/svn –config-file /data/svn/svnserve.conf”
然后在配置指定配置文件中指定的authz和passwd文件即可
这个时候就可以像启动其他服务一样启动svn了。

注意,即使svnserve服务已经运行,修改配置文件或者用户、权限管理文件,保存后马上生效,不需要重启。

 

本文来源:

有时笔记 timesnotes.com

原创作品,转载请注明出处:http://timesnotes.com/?p=18