Subversion(svn + tortoiseSvn)提交未锁定文件

时间:2009-12-17 21:40:19

标签: svn version-control tortoisesvn

我经历过颠覆的奇怪功能。

我们正在使用最新的1.6 Svn服务器visual svn和tortoise svn 1.6.6

我们已经定义了属性svn:needs-lock to a file,然后如果你从不同的位置复制文件,它会显示本地更改,如果你尝试提交SVN,它允许你提交,即使你没有获得LOCK。

这对我们来说是个大问题,请告诉我们如何强制SVN不允许提交而不获取锁定。

感谢。

4 个答案:

答案 0 :(得分:2)

Subversion中的锁定机制不会提供开箱即用的方法来阻止没有锁定的提交。

您可能会强调可能,能够使用服务器挂钩处理它,但我不确定。也许您应该问一个新问题,在那里您询问如何创建一个subversion服务器钩子脚本,以阻止人们在没有首先拥有锁定的情况下提交更改。

锁定机制只是管理有问题文件的额外工具,例如设计器文件,其中内容被大量移动(因此合并很麻烦),或者对于二进制文件,如果存储它们。但锁定机制不是开箱即用,可以防止你在没有锁定的情况下进行交易,这只是一种方便,但很容易被规避。

答案 1 :(得分:1)

Subversion提供锁定功能,以方便用户管理对其他不可合并文件的并发更改。始终可以在Subversion中“窃取”锁定,因此提交者之间的通信可能仍然是必要的。您可以通过关闭文件的只读属性来获得与描述相同的效果。

如果您需要防止用户故意滥用锁定功能,那么Subversion可能不适合您。其他产品如Perforce或ClearCase对锁定协议要严格得多。

答案 2 :(得分:0)

该属性为svn:needs-lock而非svn-needs-lock。那可能是你的问题。

此外,subversion不允许您强制锁定任何人。可以使用`--force``选项覆盖锁。

答案 3 :(得分:0)

设置svn:needs-lock属性没有什么特别之处:它告诉Subversion在签出或更新时在这些文件上设置'只读'标志。

理想情况下,所有具有svn:needs-lock属性集的文件都设置了readonly-flag。 当你获得svn锁时,Subversion会删除只读标志,以便你可以编辑文件。

所以在你的情况下发生的是这样的: 你正在替换一个文件,该文件的readonly标志设置为另一个没有设置此标志的文件。 Windows不使用替换文件的只读标志。