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

4

我曾经遇到过Subversion的奇怪行为。

我们使用最新的1.6 Svn服务器Visual Svn和Tortoise Svn 1.6.6。

我们已经将svn:needs-lock属性定义到一个文件中,但如果你从不同的位置复制文件,它会显示本地更改。如果你尝试提交SVN,即使你没有获取锁,它也会允许你提交。

这对我们来说是一个大问题,请告诉我们如何强制SVN不允许在未获取锁的情况下提交。

谢谢。

4个回答

2
Subversion中的锁定机制默认情况下不会提供一种在提交之前防止锁定的方法。
你可能可以通过服务器挂钩来处理这个问题,但我不确定。也许你应该提出一个新问题,询问如何创建一个Subversion服务器挂钩脚本,如果人们没有首先拥有文件的锁,则阻止他们提交更改。
锁定机制只是管理问题文件的额外工具,例如设计师文件,其中内容经常移动(因此合并很麻烦),或者二进制文件(如果你存储这些文件)。但是,锁定机制不能防止你在没有锁定的情况下提交,它只是一种方便,但很容易被规避。

问题已发布: http://stackoverflow.com/questions/1925454/help-with-subversion-svn-hook-script谢谢。 - Irfan Mulic

1

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

如果您需要防止用户故意滥用锁定功能,则Subversion可能不是适合您的工具。其他产品,如Perforce或ClearCase,在锁定协议方面要严格得多。


0

属性应该是svn:needs-lock而不是svn-needs-lock。这可能是你的问题所在。

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


1
抱歉打错了,正确应该是属性 svn:needs-lock。 - Irfan Mulic

0

设置svn:needs-lock属性并没有什么特殊作用:它告诉Subversion在检出或更新这些文件时将“只读”标志设置为“是”。

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

所以,在你的情况下发生的情况是: 你正在用另一个没有设置只读标志的文件替换已经设置了只读标志的文件。而Windows不使用被替换文件的只读标志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接