加锁解锁简介
加锁与解锁的操作对于项目中的二进制文件,如图片、声音、动态库等不可合并文件是非常有用的,可以让这些文件防止产生恼人的冲突,但TortoiseSVN中的Get lock的其实并不能满足需要,并不能在编辑前获得对文件的独占访问,这也是本文要结合属性来详解文件加锁的原因。
为了避免多个人同一时间对同一个文件改动的相互覆盖,版本控制系统就必须有一套冲突处理机制。
对于解决冲突,有两种处理办法:乐观加锁和严格加锁。
严格加锁:所有签出的文件都是只读的,任何对文件的修改必须要获得文件的锁,如果其他人没有拥有该文件的锁,那么版本控制系统就会授权给你文件的锁,并将文件设置为可编辑的。
乐观加锁:所有签出的文件都是可读写的,对文件的修改不必获得文件的锁,当你修改完文件签入时,会首先要求你更新本地文件,版本控制系统不会覆盖你的本地修改,而是会让你自己合并冲突后签入。
SVN使用的是乐观加锁策略,而像TFS一类的版本控制系统允许你对加锁策略进行选择。
相比于严格加锁,乐观加锁可能会有较高的产生冲突的概率,但允许团队成员任何时间对文件进行编辑,拥有极大的协作效率。
对于像不可合并的二进制文件或想在某些文件和目录上采取严格加锁策略,SVN也提供了严格加锁的办法,就是对文件的加锁解锁操作。
加锁方式
SVN加锁可以直接在项目上进行加锁,也可以在文件夹中进行加锁。
(1)项目中加锁
右击要加锁项目-->Subversion-->Subversion Properties-->Add-->Property Name(needs-lock)-->OK
操作图如下:
(2)文件中加锁
以上为乐观枷锁策略,存在被锁定后其他成员依然可以在本地修改,如果我们想对某个文件或某个目录采取严格加锁策略,
更明确的说是:所有文件默认为只读,在文件修改前需要先获取锁,只有其他人不拥有锁时才可以锁定文件并修改。
要实现严格加锁,就需要使用SVN的svn:needs-lock属性。
操作步骤:在加锁的文件或目录上点击右键-->TortoiseSVN-->Properties属性菜单,点击News新建属性,选择Needs-lock:
默认新增needs-lock属性,可以New添加新的属性,点击OK
获取锁
(乐观加锁)
(1)在项目中
右击要获取锁的文件-->Subversion-->Lock
(2)在文件中
右击加锁文件-->TortoiseSVN-->Get Lock-->在红框中记录日志-->OK
释放锁
有两种情况会释放锁:
1、选择你想要释放锁定的文件,然后右键菜单点击TortoiseSVN--> Release lock;
2、TortoiseSVN为了确保你不会忘记释放锁,在提交对话框中,总是会显示锁定的文件,并总是默认被选中。如果你继续提交,选中的文件中的锁就被移除了,就算你从没有修改过。可以在锁定文件的目录上使用Commit,打开提交对话框验证一下。
如果你不希望释放文件的锁,就必须取消选中它。
查看锁状态
在文件中右击要查看的项目-->TortoiseSVN -> Check for modifications,
默认显示本地修改文件,要查看所有的修改文件,再点Check Repository 这样显示详细的修改信息,包括owner,lock info等。