前言

通过svnadmin内置的dump工具导出所有数据。Linux平台直接导入对应的仓库,修改对应的配置文件使得svnserve能够正常提供服务。

操作流程

  1. 在windows上命令行模式下通过svnadmin命令导出仓库

    1
    svnadmin dump D:\Repositories\project -F D:\project.dump
  2. 使用Linux上rz命令将导出的文件传输到Linux系统

    1
    rz -be

    然后选择对应文件
    如果提示 command not found 表示没有安装lrzsz工具,使用下面命令进行安装。

    1
    yum install -y lrzsz
  3. 创建与windows端名称相同的仓库

    1
    svnadmin create /data/svn/project
  4. 导入仓库
    切换到与新建的仓库同级目录,执行load命令

    1
    2
    3
    cd /data/svn

    svnadmin load project < /data/project.dump
  5. 导入用户和用户组信息

    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. 修改配置文件并重启服务

    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/
  2. 测试使用

    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中间某段连续版本,导入新的系统,可以使用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开始计数。