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写入相应进程ID(PID)文件中,而在它正常关闭时,删除该文件。PID文件方便服务被其他进程找到。例如,在系统关闭时,关闭服务的脚本检查PID文件以决定它需要向哪个进程发出一个终止信号。
这次服务器突然崩溃,导致PID文件出错,换新硬盘后对完全复制旧硬盘的东西,错误的PID也被复制过来,于是无法启动服务器。删除server.pid文件后,启动服务器能重新生成server.pid文件。
2 SVN目录中节点损坏
损坏情况:
l SVN的Log无法读取;
2从Version53开始被损坏,无法导出,因为每个版本依赖于上一个版本,于是当版本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: