一、问题:
最近开发idea+svn开发 经常遇到如下图所示的问题,导致idea一直刷新,无法提交文件:
二、解决方案
- 关闭idea
- 在对应工程上 执行如下操作 svn clear
- 重启idea即可解决。
三、svn clear up的作用
1.作用
SVN的清理命令,我们经常会使用。这个命令的原理,我们还是有必要深究一下的。当SVN改变你的工作拷贝(或是.svn中的任何信息),它会尽可能的小心。在进行任何修改操作时,SVN都会把日志记录到日志文件中,然后执行log文件中的命令,并且执行过程中在工作拷贝的相关部分保存一个锁,防止SVN客户端在变更过程中访问工作拷贝。如果SVN的操作中断了(举个例子:进程被杀死了,机器死掉了),日志文件会保存在硬盘上。通过执行日志文件,SVN可以完成上一次没有完成的操作,你的工作拷贝可以回到一致的状态。这就是svn clean up命令的功能:它查找工作拷贝中的所有遗留的日志文件,删除进程中工作拷贝的锁。如果SVN告诉你工作拷贝中的一部分已经“锁定”了,
你就需要运行这个命令了。
2. 本地文件锁定,使用“清除”命令
SVN本地更新时,由于一些操作中断,如磁盘空间不够,用户取消等,可能会造成本地文件被锁定的情况。这时候无论你在执行SVN的更新、提交等子命令都会提示 locked 的错误。一般出现这种情况的解决方法:
- 可以使用SVN clean up来清除锁定。
- 如果不是本目录锁定,系统提示上一层目录锁定,需要到上一层或者根目录中清除。
- 如果在根目录下都无法clean的话,一般采取的方法是另外找一个目录重新CHECKOUT。但有时SVN目录下可能有一些自己本地修改的文件,还未提交到SVN服务器,这时重新CHECKOUT需要注意本地文件的备份,并且不要强制覆盖服务器上其它人修改的内容。
- 其实SVN加锁会在.SVN(隐藏文件)中生成一个名字叫lock的文件(无后缀),查找所有的,手工删除。然后再尝试更新,系统可能会提示某个.base文件无法访问。找到它,把相关的文件或其所在的目录删除,重新UPDATE。
- 在相应的目录中,比如我在更新metasploit的“/opt/metasploit3/msf3/lib/active_support/core_ext”这个目录时就遇到了类似的情况,把.SVN子目录(注意,“.”目录是个隐藏目录,需要选择“文件夹选项”→“查看”→“显示隐藏文件”菜单项)里面log文件删除,就可以了。然后继续做svn cleanup命令。