Linux 下 svn 服务搭建
Contents
安装
sudo apt install subversion
创建仓库
sudo svnadmin create ~/svn/project
配置
svn 的配置在仓库根目录下的 conf 文件夹中
shtotal 12K
-rw-rw-r--. 1 cent cent 1.1K Oct 30 07:55 authz
-rw-rw-r--. 1 cent cent 309 Oct 30 07:55 passwd
-rw-rw-r--. 1 cent cent 3.1K Oct 30 07:55 svnserve.conf
passwd
passwd 是配置用户名和密码的文件
增加用户在 [users] 下添加账号和密码,格式为 账号=密码
[users]
# harry = harryssecret
# sally = sallyssecret
test1 = test1 #增加一个账号为 test1 密码为 test1 的用户
test2 = test2
authz
authz 是配置用户组及对应版本库的权限
[groups] 配置用户组以及组员,组员之间用 , 隔开
版本库通过 [] 表示, [/] 表示版本库的根目录, [repository:/] 表示名为 repository 的版本库, [repository:/public] 表示名为 repository 版本库下的 public 目录。
用户组以 @ 开头, @dev 表示 dev 用户组,不以 @ 开头表示用户。后面接对应的权限, r 表示可读, w 表示可写,不填表示没有权限。
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
dev = test1,test2 # 增加一个 dev 的用户组,组员有 test1 和 test2
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/] # 版本库的根目录
@dev = rw # 用户组的权限
[test:/] # 名为 test 的版本库
test1 = rw # 账号为 test1 对 test 版本库的权限
[test:/public] # 名为 test 版本库下 public 目录的权限
test2 = r # test2 对 版本库 test 下 public 目录的权限
svnserve.conf
svnserve.conf 是用来设置用户密码配置文件所在的路径,和用户权限配置文件所在的路径,主要有以下 4 个配置
anon-access用来设置没有认证的用户所具有的权限,有三个取值none表示没有权限,write表示可以往服务器提交数据,read表示可以从服务器更新数据,但是不能提交。auth-access用来设置验证用户所具有的权限,和anon-access一样有三个表示权限的值,这里不再赘述。password-db用来指定用户名和密码所在的路径authz-db用来指定权限所在的路径
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
删除仓库
rm -rf ~/svn/project
启动服务
svnserve -d -r ~/svn/project
svn 默认端口号是 3690,可以通过 --listen-port xxx 来指定特定的端口
-d 表示后台运行
-r 后面跟 svn 仓库的路径
多版本库管理
在 svn 的管理中,可能会存在多个版本库的情况,这样就需要管理多个版本库。
一般的做法是创建好了不同的版本库,分别启动一个 svnserve 去管理。这样做简单,但是第二个库开始就需要指定端口,默认的端口(3690)已经被第一个占用了。而且项目之间存放的路径可能不同,比较分散,这样管理起来就比较麻烦。
sudo svnadmin create ~/project1
sudo svnadmin create ~/project2
svnserve -d -r ~/project1
svnserve -d -r ~/project2 --listen-port 3691
除了上面的做法,还有一种做法是把所有的仓库存放在同一个目录下,统一管理。这样就可以通过一个端口来管理所有的版本库了,不过需要注意的是这些仓库需要放在同一个目录下。
sudo svnadmin create ~/svn/project1
sudo svnadmin create ~/svn/project2
svnserve -d -r ~/svn/
版本库的备份
随着开发不断进行,版本库的版本号一直在增加,内容也在不断增多,占用的空间也越来越大,这时候我们可以通过备份来丢弃掉前面的一些版本,以此达到精简版本的目的。
备份的指令是 svnadmin dump 仓库的路径 -r 开始版本号:结束版本号 > 保存的地址
举个🌰
svnadmin dump ~/svn/project -r 3:10 > ~/dump
版本库的导入
版本库备份之后,我们还要把它导入到一个新的仓库中使用。
导入的指令是 svnadmin load 仓库的地址 < 精简之后的地址
同样举个🌰
svnadmin load ~/svn/project < ~/dump