我曾经遇到过Subversion的奇怪行为。
我们使用最新的1.6 Svn服务器Visual Svn和Tortoise Svn 1.6.6。
我们已经将svn:needs-lock属性定义到一个文件中,但如果你从不同的位置复制文件,它会显示本地更改。如果你尝试提交SVN,即使你没有获取锁,它也会允许你提交。
这对我们来说是一个大问题,请告诉我们如何强制SVN不允许在未获取锁的情况下提交。
谢谢。
我曾经遇到过Subversion的奇怪行为。
我们使用最新的1.6 Svn服务器Visual Svn和Tortoise Svn 1.6.6。
我们已经将svn:needs-lock属性定义到一个文件中,但如果你从不同的位置复制文件,它会显示本地更改。如果你尝试提交SVN,即使你没有获取锁,它也会允许你提交。
这对我们来说是一个大问题,请告诉我们如何强制SVN不允许在未获取锁的情况下提交。
谢谢。
Subversion提供锁定功能,以便帮助用户管理对无法合并的文件的并发更改。在Subversion中,始终可以“窃取”锁定,因此提交者之间仍然需要通信。您可以通过关闭文件的只读属性来获得与您描述的相同效果。
如果您需要防止用户故意滥用锁定功能,则Subversion可能不是适合您的工具。其他产品,如Perforce或ClearCase,在锁定协议方面要严格得多。
属性应该是svn:needs-lock
而不是svn-needs-lock
。这可能是你的问题所在。
此外,Subversion不允许你强制锁定任何人。可以使用`--force`选项覆盖锁定。
设置svn:needs-lock属性并没有什么特殊作用:它告诉Subversion在检出或更新这些文件时将“只读”标志设置为“是”。
因此,理想情况下,所有设置了svn:needs-lock属性的文件都应该有只读标志。 当你获取svn锁时,Subversion会删除只读标志,以便你可以编辑文件。
所以,在你的情况下发生的情况是: 你正在用另一个没有设置只读标志的文件替换已经设置了只读标志的文件。而Windows不使用被替换文件的只读标志。