前言 {#前言}
通过svnadmin
内置的dump
工具导出所有数据。Linux平台直接导入对应的仓库,修改对应的配置文件使得svnserve
能够正常提供服务。
操作流程 {#操作流程}
-
在windows上命令行模式下通过svnadmin命令导出仓库
|-----------|------------------------------------------------------------------| |
1
|svnadmin dump D:\Repositories\project -F D:\project.dump
| -
使用Linux上
rz
命令将导出的文件传输到Linux系统|-----------|----------------| |
1
|rz -be
|然后选择对应文件
如果提示command not found
表示没有安装lrzsz
工具,使用下面命令进行安装。|-----------|------------------------------| |
1
|yum install -y lrzsz
| -
创建与windows端名称相同的仓库
|-----------|-------------------------------------------| |
1
|svnadmin create /data/svn/project
| -
导入仓库
切换到与新建的仓库同级目录,执行load命令|---------------|-----------------------------------------------------------------| |
1 2 3
|cd /data/svn svnadmin load project < /data/project.dump
| -
导入用户和用户组信息
|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------| |
1 2 3 4 5
|D:\Repositories\htpasswd //用户账号和密码 D:\Repositories\project\conf\VisualSVN-SvnAuthz.ini //仓库目录的权限信息 D:\Repositories\groups.conf //用户组
|
- 用户迁移
将D:\Repositories\htpasswd
内容 拷贝到/data/svn/project/conf/passwd
中,问题是windows中的密码是加密的,这个就没办法只能重置了。 - 用户组迁移
将D:\Repositories\groups.conf
内容拷贝到/data/svn/project/conf/authz
对应的【groups】下。 - 仓库目录权限迁移
将D:\Repositories\project\conf\VisualSVN-SvnAuthz.ini
内容拷贝到/data/svn/project/conf/authz
用户组内容后面。
-
修改配置文件并重启服务
|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
1 2 3 4 5 6 7 8 9 10 11
|vim /data/svn/project/conf/svnserve.conf # project是具体的仓库名称,需要根据实际情况进行替换 anon-access = read auth-access = write password-db = /data/svn/conf/passwd authz-db = /data/svn/conf/authz force-username-case = none
|建议所有svn仓库共用统一的passwd和authz文件,否则可能会遇到问题。
保存文件并重启
|-----------|-----------------------------------| |
1
|svnserve -d -r /data/svn/
| -
测试使用
|---------------|---------------------------------------------------------------------------------------| |
1 2 3
|cd /data svn co svn://127.0.0.1/project/dir1 --username=zsyy --password==zsyy
|
-
检查是否启动成功:(查看是否存在svnserve 进程)
|-----------|------------------------------| |
1
|ps -ef|grep svnserve
| -
启动svn版本库
|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------| |
1 2 3
|svnserve -d -r /data/svndata svnserve --listen-port 3691 -d -r /data/svndata # 增加设置端口参数 netstat -ntlp # 查看端口是否开启
| -
关掉svn服务
先使用1里面的命令获取到进程号,再调用下面的命令执行关闭操作。|-----------|-------------------------------------------------------| |
1
|kill -9 4967 # 这里的4967只是例子,实际执行时需要用真实的进行替换
|
一般情况下是能够正常使用了,如果出现
svn: E170001: Authorization failed
请核对下目录有没有错误。svn的权限是根据目录来分配的,然后去找找看配置文件有没有把权限正确配置。还不行的话就检查下配置项前面是不是有空格。
特殊操作 {#特殊操作}
截取svn部分版本导入新系统 {#截取svn部分版本导入新系统}
如果想只截取原svn中间某段连续版本,导入新的系统,可以使用dump命令的-r参数,例子如下:
|-----------|---------------------------------------------------------------------------------|
| 1
| svnadmin dump -r 7:8 /data/svndata/test > /root/Documents/test_7-8.dump
|
导入新系统的操作步骤类似,操作样例如下:
|-------------|------------------------------------------------------------------------------------------------------|
| 1 2
| svnadmin create /data/svnd/test svnadmin load /data/svn/test < /root/Documents/test_7-8.dump
|
这样操作完毕之后,则新的svn版本只包含截取的连续版本,且版本号是从1开始计数。