SVN服务器迁移小结

        由于项目需要把svn服务迁移到新服务器上,临时抱佛脚在网上查找了很多方法,官方推荐的方法是通过svnadmin dump命令来从旧服务器导出版本文件,通过svnadmin load命令导入到新服务器。在具体操作时还是遇到了很多问题,在此进行小结。

一、准备工作 

1、在新服务器上安装Subversion,默认安装即可。

  如果安装的是.msi文件,则系统PATH环境变量里会自动追  “C:\ProgramFiles\Subversion\bin"。

  如果是通过.zip文件,就需要自己配置环境变量了。

2、创建SVN版本库

  使用svnadmin create 命令。如:

svnadmin create E:\SVN\new

  表示在E:\SVN路径下创建了名为new的版本库,可以把conf文件夹用旧库里的替换(因为导入

  导出版本文件时,不涉及用户权限等信息,所以手动进行copy,节省配置时间)

二、导出旧服务器上的版本库文件

1、导出时一定记得关闭svn服务。

2、导出命令:

  假设旧版本库为D:\SVN\old,目前这个版块库由5000个reversion:

  如果想全部导出,这样写:

svnadmin dump D:\SVN\old > old.dump

  也可以指定版本号顺便给svn瘦身,这样写:

svnadmin dump D:\SVN\old -r 2000:5000 > old.dump          

//表示只导出2000-5000的版本,版本号2000之前的记录都舍弃

3、通过svnadmin dump命令,svn里所有的内容就生成了一个old.dump文件。

三、版本库文件导入到新服务器

1、在新的服务器上使用命令:

svnadmin load E:\SVN\new < old.dump

即可导入,其中old.dump文件是第二步中导出来的文件。

2、通知各个客户端修改配置,将服务器地址替换。

四、遇到的几个问题。

1、使用svnadmin load命令导入的时候发现load到某个reversion就停止了,还不报错。 

原因可能是,因为dump文件太大,或者subversion版本不一致。这样会造成新版本库里文件缺

失。解决方法为使用增量备份,分多次导入。

导出时,命令如下:

svnadmin dump D:\SVN\old -r  0:2000 > old1.dump
svnadmin dump D:\SVN\old -r  2001:4000  --incremental > old2.dump
svnadmin dump D:\SVN\old -r  4001:5000  --incremental > old3.dump

上面除了第一行外,--incremental必须写,表示增量导出。

如果不写--incremental,导old1.dump后,再导入old2.dump时,会报类似路径已经存在的错误。

个人理解是,某个文件或者路径在old1.dump文件中已经被导出,如果不使用增量导出,那么

old2.dump中也会导出该文件或者路径。这样,在导入的时候会产生冲突。

导入时,命令如下:

svnadmin load E:\SVN\new < old1.dump
svnadmin load E:\SVN\new < old2.dump
svnadmin load E:\SVN\new < old3.dump


2.在导入eclipse项目的库时,提示svnadmin: E125005: Invalid property valuefound in

dumpstream; consider repairing the source or using--bypass-prop-validation while

loadingsvnadmin: E125005: Cannot accept non-LFline endings in 'svn:log' property
 

具体原因参考http://blog.csdn.net/powerccna/article/details/9949739

这篇博客提供了一种方法,也就是repairing the source;

如果嫌麻烦可采用--bypass-prop-validation也就是忽略这个错误。

导入时,如下:

svnadmin load --bypass-prop-validation E:\SVN\new < old.dump
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SVN 迁移到 Docker 环境可以分为以下几个步骤: 1. 创建一个 SVN 服务器的 Docker 镜像 2. 启动并配置 SVN 服务器容器 3. 将本地 SVN 数据库迁移到容器内 4. 配置客户端连接到新的 SVN 服务器 下面是详细的步骤: 1. 创建 SVN 服务器的 Docker 镜像 可以使用 Dockerfile 来创建 SVN 服务器的镜像。以下是一个简单的 Dockerfile 示例: ``` FROM ubuntu:latest RUN apt-get update && apt-get install -y subversion apache2 libapache2-mod-svn RUN mkdir /svn RUN svnadmin create /svn/repo EXPOSE 80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] ``` 这个 Dockerfile 安装了 SVN 和 Apache 服务器,创建了一个名为 `repo` 的 SVN 仓库,暴露了 80 端口,并启动了 Apache 服务器。 2. 启动并配置 SVN 服务器容器 使用以下命令来构建和运行 SVN 服务器容器: ``` docker build -t svn-server . docker run -d -p 8080:80 --name my-svn-server svn-server ``` 这个命令会构建名为 `svn-server` 的镜像,并启动一个名为 `my-svn-server` 的容器。SVN 服务器将通过容器的 80 端口暴露给主机的 8080 端口。 接下来,需要配置 SVN 服务器。可以使用以下命令进入容器: ``` docker exec -it my-svn-server bash ``` 然后,可以编辑 `/etc/apache2/mods-enabled/dav_svn.conf` 文件,配置 SVN 服务器的访问权限和认证方式。例如,可以添加以下内容: ``` <Location /svn> DAV svn SVNParentPath /svn AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/subversion/passwd Require valid-user </Location> ``` 这个配置文件指定了 SVN 服务器的根路径为 `/svn`,使用 HTTP 基本认证,用户信息保存在 `/etc/subversion/passwd` 文件中,只允许验证通过的用户访问。 3. 将本地 SVN 数据库迁移到容器内 使用以下命令将本地 SVN 数据库迁移到容器内: ``` docker cp /path/to/local/repo my-svn-server:/svn/ ``` 这个命令将本地的 SVN 仓库复制到容器内的 `/svn` 目录下。 4. 配置客户端连接到新的 SVN 服务器 现在,可以使用 SVN 客户端连接到新的 SVN 服务器了。在客户端中,使用以下命令: ``` svn co http://localhost:8080/svn/repo ``` 这个命令将从新的 SVN 服务器中检出 `repo` 仓库。 以上是将 SVN 迁移到 Docker 环境的基本步骤,具体的细节可能需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值