搭建svn服务器

git 虽然一时风头无两,但是不可否认在windows环境下使用git还是相对比较麻烦,而且在一个惯用svn的团队中推广git,不得不考虑其易用性和学习曲线的问题。所以svn还是大多数技术团队的首选。

下面以在centos7 中安装svn服务器为例说明。

首先建立svn用户(非必要)

useradd svn
passwd svn

然后在svn的home目录中建立版本库

svnadmin create repo1 // 创建版本库repo1
svnadmin create repo2 // 创建版本库repo2
...

然后对版本库进行用户管理和权限控制,在每个版本库下面都有一个conf目录,里面有svnserve.conf, authz, passwd三个文件,它们的作用分别为:

  1. svnserve.conf 版本库的配置文件
  2. passwd 用户名和口令文件
  3. authz 权限配置文件

在svnserve.conf文件中配置以下选项

  • anon-access 非授权用户的权限,一般设置为none,即没有任务权限
  • auth-access 授权用户的权限, 一般设置为write,即可读写
  • password-db 将该配置项去掉注释,维持原值即可
  • auth-db 将该配置项去掉注释,维持原值即可

一个开发测试团队往往要负责多个版本库,每个版本库是单独指定访问权限未免啰嗦,我们一般在版本库的共同父目录中指定控制文件,本例中为(/home/svn),以下是配置文件的例子

# file: svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

# file: passwd
#该文件中是用户名和密码的列表
[users]
user1 = passwd1
user2 = passwd 2
# file: authz
# 一般来说在团队中以组来管理权限,当然也可以为个人指定权限,组和个人的区别是组的前面有@
[groups]
dev = user1,user2  //定义开发组
test = user2  // 定义测试组
# 下面单独为每个版本库定义权限
# 注意版本库的写法,其中`:/`代表当前指定版本库的根目录
[repo1:/]
@dev = rw  // 开发组可以读写
@test = r  // 测试组只可以看
#当然你也可以单独为某个用户指定权限
user3 = rw

定义好后就可能开启svn服务了

su - // 切换到root下来启用服务
svnserve -d -r /home/svn --config-file /home/svn/svnserve.conf
# -d 表示在后台执行
# -r 表示版本库的根目录(这里是多个版本库总的你级目录)
# --config-file 因为我们的多个版本库要共用同一套配置,所以要通过此选项指定配置文件

关闭svn服务

ps -ef | grep svnserve
kill -p [pid]

svn迁移:

# 首先在源服务器上备份
$ svnadmin dump [repo] > repo.svn
# 建议备份后进行压缩
$ svnadmin dump [repo] | gzip > repo.svn

# 然后在目标服务器上恢复
$ svnadmin create [repo]
$ svnadmin load [repo] < repo.svn
添加新评论