先说下流程

首先要明白整个过程。先导入和导出svn文件,然后配置用户名密码和权限

一、从windows导出svn文件

从windows找到svn的目录

使用命令

svnadmin dump 项目地址 > 项目名.dump

将svn仓库文件导出

仓库太多的话最好写下bat脚本,批量导出

压缩成zip包

二、传输文件到linux服务器

使用命令scp

如果windows下载了git可以用git bash的scp命令,否则就要自己拷贝

scp xxx.zip root@xxx:/root

压缩包名称和ip以及服务器上文件路径自己改

三、linux下载svn

使用命令下载svn

yum install subversion

四、创建对应的仓库

使用命令创建

svnadmin create /svndata/xxx

仓库多的话,用shell脚本批量创建

五、导入svn文件

unzip 解压压缩包

然后使用命令

svnadmin load /svndata/项目名 < 项目名.dump

六、修改仓库配置

每个仓库的conf目录下都有自己authz,passwd和svnserve.conf文件,不好管理

拷贝一份到svn根目录下。然后修改其他仓库下的是svnserve.conf指向根目录下的authz和passwd

修改内容如下

anon-access = none (none匿名不可访问)
auth-access = write

password-db = /xxx/passwd (修改为根目录的passwd)

authz-db = /xxx/authz (修改为根目录的authz)

七、修改配置

将windows的htpasswd文件和groups.conf拷贝过来

修改根目录的authz,将groups.conf目录下的组信息内容拷过去

然后到每个子仓库下的VisualSVN-GlobalWinAuthz.ini下的权限信息拷贝到authz中

注意前缀要加上仓库名和冒号,如test仓库下的文件内容如下

window下VisualSVN-GlobalWinAuthz.ini
[/]
*=
linux下authz内容为
[test:/]
*=

其他的类似,都是改前面前缀,其他内容不变

权限到这里就改完了。

如果直接使用svn的话,修改下passwd,重新创建用户就行。

然后启动svn

svnserve -d -r /根目录--listen-port 端口号

八、使用httpd

因为不想重新创建用户,所以我使用httpd来搭建,httpd可以直接使用htpasswd文件来读取用户信息

下载httpd和mod_dav_svn模块

yum install -y mod_dav_svn
yum install -y httpd

到httpd配置目录下创建文件内容如下

vi /etc/httpd/conf.d/svn.conf

<Location /svn>
#开启svn
   DAV svn
#指定父目录位置,以后所有版本库都将存放在该目录下
   SVNParentPath /根目录/
#开启svn版本库父目录功能
   SVNListParentPath On
#指定授权模式
   AuthType Basic
#登陆窗口标题显示提示文字
   AuthName "Authorization Realm"
#指定访问版本库的账户和密码存放文件,该文件需要用apache的htpasswd命令创建
   AuthUserFile /根目录/passwd
#指定访问版本库的用户和组的权限控制文件
   AuthzSVNAccessFile /根目录/authz
#要求验证有效的用户才能访问
   Require valid-user
</Location>

systemctl enable httpd

systemctl start httpd

如果不想使用80端口的话可以修改/etc/httpd/conf/httpd.conf

Listen xxx

将xxx改为自己想要的端口,然后用防火墙端口映射

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=xxx --permanent
80映射到xxx端口
 firewall-cmd --reload

到此整个过程结束