svn 服务端配置
1. 创建版本库
单版本库与多版本库各有优点和缺点,主要根据具体项目情况进行选择。
1.1. 多库模式
创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20➜ 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 文件
1
2
3➜ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 匿名用户只读(read或none)
anon-access = none
# 认证用户可写
auth-access = write
# 公用 passwd 文件的位置
password-db = ../../passwd
# 公用 authz 文件的位置
authz-db = ../../authz
# 仓库的文件名(具体在客户端更新下载的时候能看到仓库名字)
realm = blog修改公用的 passwd 设置用户名、密码
# vim /home/repos/passwd
1
2
3
4[users]
admin = admin
lisi = pwdls
zhansan = pwdzs修改公用的 authz 设置用户访问权限
vim /home/repos/authz
1
2
3
4
5
6
7
8
9
10
11
12
13[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。
1.2. 单库模式
单库方式比较简单,只针对于单一项目的开发管理,并且在单库方式下一台服务器只能创建一个样本库,限制较大!
创建一个新的单库 cms
1 | ➜ mkdir -p /home/repos2 |
单库模式下,配置文件在 /home/repos2/cms/conf
下,其中 svnserv.conf 和 passwd 的配置方式与多库相似,authz 的配置有较大区别,如下:
vim /home/repos2/cms/conf/authz
1 | [groups] |
2. 启动
注意:svn 默认监听端口 TCP 3690,如果开启了防火墙需提前加入可访问列表;或者在启动时候,使用参数
--listen-port
。
多库 svnserve -d -r /home/repos
单库 svnserve -d -r /home/repos/cms
-d
以守护模式运行-r
指定 svn 服务的根目录--listen-port
指定 svn 服务监听的端口号
3. 访问
多库模式需要指定具体的库名,如:
1 | ➜ svn co svn://192.168.0.1/blog |
单库模式只需要输入ip或域名地址,如:
1 | ➜ svn co svn://192.168.0.1 |
4. 停止服务
killall svnserve
或
1 | ➜ ps -aux|grep svnserv |
5. 其它
5.1. 创建通用版本库布局
在开发过程中,推荐创建如下布局文件:
- trunk
- branches
- tags
步骤:
创建目录布局临时文件
1
2
3
4
5
6➜ mkdir -p /tmp/repos_layout/{trunk,branches,tags}
➜ tree /tmp/repos_layout/
/tmp/repos_layout/
|-- branches
|-- tags
`-- trunk导入到版本库中
1
2
3
4
5
6➜ 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.查看是否导入成功
1
➜ svn list --verbose svn://192.168.0.1/resume
修改权限
编辑权限文件
vim /home/repos/authz
,设置普通用户访问 trunk,管理员访问版本库根目录 trunk、branches、tags,如下:1
2
3
4
5[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/