SVN 文件解锁尝试

达芬奇密码2018-08-09 13:02

菜鸟一枚,入职公司半年左右,平时负责产品迭代的功能测试,然后写写接口测试,平凡而又正常的进行着,一切还算比较顺利。话说某一天,邮件通知CI中某些接口测试挂了,于是紧张的进行排查,最终定位出失败的原因:

1.开发将mongoDB迁移,没有将数据同步,导致数据丢失,接口报错

2.开发在某迭代中优化了某些接口,将其url做了调整,导致CI中该接口404.

       好了原因定位了,就该修复问题且提交,保证接口可以持续稳定的运行。大刀阔斧很有效率将接口进行了修改,准备了数据,并且本人很负责任的本地测试了一下,失败的接口都通过了,于是很高兴的准备提交代码,然而灾难就在这等着我呢,发现用svn提交代码时总是报错:

Some resources were not updated.
svn: E155004: Working copy '文件路径' locked
svn: E155004: '文件' is already locked

       开时怀着侥幸的心里,以为多提交几次也许就可以了,本地尝试了几次,发现eclipse还是很顽固的依然的报错。没有办法,只有问度娘了,网上的资料还是不少的,但解决方法却是出乎意料的一样,忍不出的在心中对某度鄙视了一番,还是贴出其解决办法吧如下:

在出错文件夹下(或整个工程项目),鼠标右键TortoiseSVN->Clean up.

SVN错误:Attempted to lock an already-locked dir

1、出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录(或整个工程项目),再执行“清理”,然后再“更新”。

2、有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理”,最后“更新”或“提交”。

哎,尝试了若干次,心里已崩溃,表示某有效果。

最终果断的尝试自己的解决办法,虽然没有效果但是也说明一下,避免后人重复踩坑。

1.以为是本地文件的问题,于是重新clone一份新文件,满怀希望的提交试了下,发下又出现了先问题:

svn:E195022:File'文件路径'is Locked  in another working copy

2.然后又很白痴了一把,以为是本地已有一份文件的缘故,于是没有三思就将已修复的项目删除了,然后再重新上传,发现问题依然,当时心已悔,因为已修复的代码都被自己给删了。

3.我是打不死的小强,再接再厉,可能这个工作区间有问题,就切换了工作区间重现pull了一份代码,问题还是没有解决,当时心已死,这前前后后是花了很多时间的,本来就要放弃了,怀疑是svn服务器的问题,准备请教大牛。但为了防止被鄙视,就测试下是否是服务器的问题,在本地新建了一个类且提交,令人以外的提交成功了,竟然没有报错,看来还是提交文件的自身的问题,还是需要自己解决呀。

于是回归最初,上网找资料、总结、不断尝试,最终成功了,所以如果大家突然发现无法提交文件,文件被Locked,希望这篇文章可以给予你一些帮助,减少些弯路。

解决步骤如下:

首先,需要放弃eclipse自带的svn插件,不然会被坑很久的,建议下载且安装TortoiseSVN,下载安装参照网上教程(一大堆),安装好之后找到目标文件的路径,然后右键:

然后,点击Get lock,在弹窗中勾选Steal the locks,点击OK


最后,点击右键,选择Release lock,在弹窗中会显示被锁的文件,此时释放锁即将已加锁的文件释放,此时就可以提交工程了

也许会发现其实很简单,其实是的,但问题前提是不知道的,所以就难了,也走了许多弯路,悲剧的我还要重复的修复失败的接口(已修复的已被我删了)

俗话说,要知其然,于是借此机会也把svn的锁机制简单了解了下,如下:

为什么要加锁?

为了避免多个人同一时间对同一个文件改动的相互覆盖,版本控制系统就必须有一套冲突处理机制。

对于解决冲突,有两种处理办法:乐观加锁和严格加锁。

严格加锁:所有签出的文件都是只读的,任何对文件的修改必须要获得文件的锁,如果其他人没有拥有该文件的锁,那么版本控制系统就会授权给你文件的锁,并将文件设置为可编辑的。

乐观加锁:所有签出的文件都是可读写的,对文件的修改不必获得文件的锁,当你修改完文件签入时,会首先要求你更新本地文件,版本控制系统不会覆盖你的本地修改,而是会让你自己合并冲突后签入。

SVN使用的是乐观加锁策略,而像TFS一类的版本控制系统允许你对加锁策略进行选择。

相比于严格加锁,乐观加锁可能会有较高的产生冲突的概率,但允许团队成员任何时间对文件进行编辑,拥有极大的协作效率。

对于像不可合并的二进制文件或想在某些文件和目录上采取严格加锁策略,SVN也提供了严格加锁的办法,就是对文件的加锁解锁操作。

知其然也要知其所以然,我一直很好奇我是什么时候将文件锁定了,发现锁定文件的条件如下:上传文件时失败,文件就会被加锁。

升华:当遇到奇怪的问题时,切记一定要冷静冷静,因为问题出现必然有其存在的原因,我们一定要分析原因,寻求解决的方法。切忌慌张、病急乱投医,因为这样会事倍功半,增加许多无用功。


网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者付二帅授权发布。