51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

SVN仓库从Windows迁移到Linux

前言 {#前言}

通过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部分版本导入新系统}

如果想只截取原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开始计数。


赞(3)
未经允许不得转载:工具盒子 » SVN仓库从Windows迁移到Linux