你知道svn的needs-lock属性吗

我们都知道svn对于文本文件可以支持多人合作修改,会自动将多人对于同一文件的操作进行合并,但对于二进制文件只能爱莫能助了!

我们游戏开发中,对于数值配置表通常都是通过excel表格进行配置的,很多策划都对同一个表格修改时就会出现冲突,当冲突发生时,就需要将自己的修改保存到其他地方,然后回滚或删除表格,update为最新的后,再次进行修改提交,当然这种做法是不可取的。修改excel的正确姿势是:在对execel表格进行修改时,先get lock,然后进行修改-提交.

添加svn:needs-lock属性

但上述的正确姿势,并不是每个人都会记得get lock,那么还是有潜在冲突的问题存在,那么有没有强制get lock的操作呢,答案是有的,svn提供了对文件增加need lock属性的功能,具有need lock属性的文件在文件系统中具有只读属性,需要通过get lock才可以进行修改。TortoiseSvn客户端设置need lock属性的流程如下:
svn_need_lock.png

同样可以通过对目录进行添加need lock属性来一次性的给该目录中所有的文件增加need lock属性:
dir_needs_lock.png

但这里要说明的是:svn:needs-lock属性只能应用在文件上,而不能应用在目录上,但可以通过对目录的操作是使目录中的所有文件获得svn:needs-lock属性。因为svn:needs-lock属性不能在目录上生效, 所以当你对目录增加svn:needs-lock属性后,你在目录的属性列表中不会看到该属性,下面是对这一点的官方手册解释:

NOTE: Some properties, for example svn:needs-lock, can only be applied to files, so the property name doesn’t appear in the drop down list for folders. You can still apply such a property recursively to all files in a hierarchy, but you have to type in the property name yourself.

特定类型文件Add时自动添加svn:needs-lock属性

那么问题又来了,能不能在每次add一个新的excel文件的时候,自动添加svn:needs-lock属性呢,答案是可以的!!!通过配置svn客户端的配置文件,可以实现在提交特定类型的新文件时自动添加特定的属性
auto_needs_lock.png

然后在配置文件中,修改以下内容:

1
[miscellany]
enable-auto-props = yes  #默认是注释掉的,直接开启就好
[auto-props]
*.xls = svn:needs-lock      #添加excel文件格式提交时自动增加svn:needs-lock属性
*.xlsx = svn:needs-lock

这样就一劳永逸了,同样可以为其他类型的二进制文件自动增加svn:needs-lock属性,例如doc文件等等.

之所以能够发现svn:needs-lock这个功能,是因为新项目组的策划整体素质很高,在配置管理上很规范,表格内各种单元格的公式和限制很多,need-lock属性就是从策划那学习来的,惭愧呀!!!但是我发现了自动生效needs-lock属性的方法,以及svn:needs-lock属性只对文件有效的限制,<手动捂脸>