如何解决SVN目录的cleanup问题和lock问题

来源:互联网 发布:阿里云 王坚 年会 哭 编辑:程序博客网 时间:2024/06/06 17:58

在使用SVN时经常会碰到一个问题:在svn更新的过程中点击取消,或eclipse非正常退出,再重新点击Team-Update时就会报错:
svn: E155004: ’ ’ is already locked.

之后点击Team-Cleanup还是出现这个问题,提示目录被lock…

网上找到解决方案:

在SVN目录下找到 .svn 隐藏目录,一般是在项目的根目录下,在 .svn 目录下有一个 wc.db 数据库文件。

我们使用 sqlite3.exe 打开这个数据库,并对它进行操作。操作步骤:

  1. 下载sqlite3.exe 放到 .svn 目录下,启动命令行,进入到项目的.svn目录,敲入命令:
    sqlite3.exe wc.db

  2. 这时,进到了sqlite的命令行环境,可以操作该数据库了,首先我们输入命令:
    .tables

  3. 将该数据库中的表都显示出来,我们需要关注的是 wc_lock 和 work_queue,因为关于操作的cleanup和lock的信息是保存在这2个表里。
    需要的话,可以使用 select * from wc_lock;来查看表中的信息是否为之前操作对应的文件或目录,如果这2张表存在数据那么svn就无法进行后续的操作。

  4. 解决方案:
    很简单,只要把这2张表清空即可,命令很简单:
    delete from wc_lock;
    delete from work_queue;

需要的可以试试,最早只清空了work_queue问题没解决,提示lock,于是我一次查看跟lock相关的表格,发现wc_lock里面有我操作的记录,于是将该表也清空,发现问题就解决了。

另,参考:
(https://stackoverflow.com/questions/16433933/svn-e155004-path-of-resouce-is-already-locked)

Step1: Have to remove “lock” file which present under “.svn” hidden file.

Step2: In case if there is no “lock” file then you would see “we.db”
you have to open this database and need to delete content alone from
the following tables

– lock

– wc_lock

Step3: Clean your project

Step4: Try to commit now.

Step5: Done.

原创粉丝点击