SVN问题与处理

上一篇 / 下一篇  2012-04-01 15:28:42

这次因服务器硬盘坏掉,导致SVN不能访问,这里简要记录一下这次的解决方法。

1.SVN服务器不能启动

1.1问题分析与解决方案

1. 问题描述:

    从客户端更新SVN目录,出现连接失败错误。从服务器发现,SVN服务器无法启动,提示出现应用程序错误。

2. 问题分析:

   服务器换了一块新硬盘,旧硬盘里面的文件直接拷贝到新硬盘后就无法启动SVN服务器,可能文件的读写权限改变,或者没有注册等。

3. 解决方案:

   删除SVN仓库目录下的sever.pid文件

1.2 .pid文件的作用

   当某个服务启动时,它将其进程ID写入相应进程IDPID)文件中,而在它正常关闭时,删除该文件。PID文件方便服务被其他进程找到。例如,在系统关闭时,关闭服务的脚本检查PID文件以决定它需要向哪个进程发出一个终止信号。

   这次服务器突然崩溃,导致PID文件出错,换新硬盘后对完全复制旧硬盘的东西,错误的PID也被复制过来,于是无法启动服务器。删除server.pid文件后,启动服务器能重新生成server.pid文件。


SVN目录中节点损坏

损坏情况

SVNLog无法读取;

2Version53开始被损坏,无法导出,因为每个版本依赖于上一个版本,于是当版本53损坏后,其他的也无法恢复。

    我查到的资料是:SVN仓库中一个文件损坏,整个软件包中许多文件都会被破坏。而且损坏的文件会一直存在仓库中,无法删除。


2.1导出SVN数据

    使用dump命令导出服务器上的SVN版本,只能导致Version52,到53版本就出错了,而总共的版本有500多个,且服务器上的Log信息也无法获取,于是考虑从我们的旧服务器上恢复。


2.3 使用旧服务器上的SVN数据

    基本步骤为:从旧服务器上导出SVN数据,在新服务器上新建仓库,将导出的数据导入新的仓库中。

1. 从旧服务器上导出SVN版本,

   导出命令:svnadmin dump d:\Repositories\test> d:\test_dump

   581个版本。

2. 新建仓库soft_test_center

   SVN服务器上新建库仓库,命名为“new_test”,Checkout地址:https://192.168.23.150/svn/new_test

3. 向新仓库导入数据

   导入命令:svnadmin load d:\Repositories\new_test< d:\test_dump


   向新仓库提交文件时出现这个问题:post-commit FS processing had error 'attempt to write a readonly database'。

   解决方法:d:\Repositories\new_test文件夹,去掉“只读”属性,在“安全”选项卡中,User项增加“修改和写入”权限。


2.4 安全建议

1. 不相关的内容单独创建仓库。

    因为SVN中每个仓库内部的数据是有关联的,当某些文件出错,可能影响其他的多个文件出错。而仓库与仓库之间是完全独立,相互不影响的。

2. 文件夹命名尽量用英文

    SVN对中文的支持不是绝对的完美,用英文命名可提高安全性。


TAG:

 

评分:0

我来说两句

Open Toolbar