近期公司SVN服务器迁移,需要从Windows切到Linux,主要出于Windows版权问题;下面主要讲述下迁移过程

步骤一:准备数据

将原Windows下的svn目录拷贝到Linux,目录结构如下:

├── htpasswd
├── authz
├── ...

步骤二:安装Linux下的svn服务

yum -y install subversion

PS:可以使用svnversion --version查看是否安装成功

步骤三:配置用户及密码passwd

由于Windows采用htpasswd进行用户加密,因此用户是无法完成迁移,需要重新配置,在svn根目录下新建passwd文件,格式如下

[users]
test=test
...

PS:原先用户信息是存放在htpasswd文件下,其中密码是md5加密的

PS:注意在添加完用户后,需要重启服务来生效用户

步骤四:配置组及项目权限authz

可以通过编辑svn根目录下的authz来,如配置某个项目允许哪些人访问,需要注意的是路径是相对svnserve指定的路径svnserve -r /home/svn

[iHome:/]
test=rw
test=r
...

PS: 该文件可以直接迁移过来

步骤五:新建配置svnserve.conf信息

在svn根目录下新建svnserve.conf文件,内容如下

[general]
anon-access = none #此处需要设成none,否则会出现`want to go offline`的错误
auth-access = write
password-db = passwd # 设置用户密码文件路径,路径是相对于svnserve.conf,也可以使用绝对路径
authz-db = authz # 用户分组配置文件路径,路径是相对于svnserve.conf,,也可以使用绝对路径

[sasl]

PS:svnserve.conf在每个工程下conf也有一份,若svnserve不指定config-file,则使用工程内部的svnserve.conf

PS:每行前面不可留有空格,否则会报Option expected错误

步骤六:配置系统服务

vim /etc/init.d/svnserve

添加自定义配置信息

...
OPTIONS=-r /home/svn --config-file /home/svn/svnserve.conf
...

步骤七:配置开机自启动

chkconfig --level 345 svnserve on

步骤八:启动服务

service svnserve restart

步骤九:测试

[root@git svn]# svn ls svn://192.168.61.223/iHome
branches/
tags/
trunk/

PS: 此过程可能需要输入用户名及密码

以上是迁移的全过程,其中遇到不少坑,比如密码无法迁移、提交日志无法显示、全局配置svnserve.conf、Option expected、authz工程路径、防火墙;另外svnserve --log-file可以指定log文件,方便调试