先说下流程
首先要明白整个过程。先导入和导出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
到此整个过程结束