单版本库与多版本库各有优势和缺点,主要根据具体项目状况进行选择。html
建立vim
➜ mkdir -p /home/repos ➜ svnadmin create /home/repos/resume ➜ svnadmin create /home/repos/blog ➜ cd /home/repos ➜ tree -L 2 . |-- blog | |-- README.txt | |-- conf | |-- db | |-- format | |-- hooks | `-- locks `-- resume |-- README.txt |-- conf |-- db |-- format |-- hooks `-- locks
公用一份 authz 和 passwd 文件bash
➜ mv blog/conf/authz ./ ➜ mv blog/conf/passwd ./ ➜ rm -rf resume/conf/authz resume/conf/passwd
分别设置每一个库的 svnserve.conf 文件服务器
以 blog 为例 vim /home/repos/blog/conf/svnserve.conf
app
# 匿名用户只读(read或none) anon-access = none # 认证用户可写 auth-access = write # 公用 passwd 文件的位置 password-db = ../../passwd # 公用 authz 文件的位置 authz-db = ../../authz # 仓库的文件名(具体在客户端更新下载的时候能看到仓库名字) realm = blog
修改公用的 passwd 设置用户名、密码ide
# vim /home/repos/passwd
svn
[users] admin = admin lisi = pwdls zhansan = pwdzs
修改公用的 authz 设置用户访问权限布局
vim /home/repos/authz
ui
[groups] admin = admin blog_rw = zhangsan resume_rw = lisi [/] @admin = rw [blog:/] @blog_rw = rw [resume:/] @resume_rw = rw
说明:admin 能够读写 blog、resume;zhangsan 只能读写 blog;lisi 只能读写 resume。.net
单库方式比较简单,只针对于单一项目的开发管理,而且在单库方式下一台服务器只能建立一个样本库,限制较大!
建立一个新的单库 cms
➜ mkdir -p /home/repos2 ➜ svnadmin create /home/repos2/cms
单库模式下,配置文件在 /home/repos2/cms/conf
下,其中 svnserv.conf 和 passwd 的配置方式与多库类似,authz 的配置有较大区别,以下:
vim /home/repos2/cms/conf/authz
[groups] admin = admin dev = wanger [/] @admin = rw @dev = rw
注意:svn 默认监听端口 TCP 3690,若是开启了防火墙需提早加入可访问列表;或者在启动时候,使用参数
--listen-port
。
多库 svnserve -d -r /home/repos
单库 svnserve -d -r /home/repos/cms
-d
以守护模式运行-r
指定 svn 服务的根目录--listen-port
指定 svn 服务监听的端口号多库模式须要指定具体的库名,如:
➜ svn co svn://192.168.0.1/blog ➜ svn co svn://192.168.0.1/resume
单库模式只须要输入ip或域名地址,如:
➜ svn co svn://192.168.0.1
killall svnserve
或
➜ ps -aux|grep svnserv ➜ kill -9 $pid
在开发过程当中,推荐建立以下布局文件:
步骤:
建立目录布局临时文件
➜ mkdir -p /tmp/repos_layout/{trunk,branches,tags} ➜ tree /tmp/repos_layout/ /tmp/repos_layout/ |-- branches |-- tags `-- trunk
导入到版本库中
➜ svn import /tmp/repos_layout svn://192.168.0.1/resume -m 'init' Adding /tmp/repos_layout/branches Adding /tmp/repos_layout/tags Adding /tmp/repos_layout/trunk Committing transaction... Committed revision 1.
查看是否导入成功
➜ svn list --verbose svn://192.168.0.1/resume
修改权限
编辑权限文件 vim /home/repos/authz
,设置普通用户访问 trunk,管理员访问版本库根目录 trunk、branches、tags,以下:
[resume:/] @admin = rw [resume:/trunk] @resume_rw = rw
注意⚠️:权限是继承的,管理员既然能访问根目录,那么根下的子目录也是有权限访问的;而普通用户通常设置较小的权限集,只能访问指定的目录,好比这里的 trunk。
访问
普通用户 svn co svn://192.168.1.1/resume/trunk
管理员 svn co svn://192.168.1.1/resume/