SVN 防止无锁提交?

SVN prevent commit without lock?

我需要阻止用户在 svn 下提交一个特定文件,除非他们获得了锁定。我使用了 svn:needs-lock 属性 并且它做了我想要的,但是那里有一个限制 - 用户不能出于测试目的在本地编辑文件。这些是模型 (DevEx - xml) 文件,虽然合并它们是一个巨大的痛苦(因此需要锁)我想让用户能够在本地修改文件,但阻止他们在没有锁定的情况下签入。

可以吗?怎么样?

Subversion 中锁定的目的严格来说并不是为了防止用户提交 - 它是为了帮助防止用户在本地编辑他们以后执行更新时无法合并的文件。

SVN 锁是为了方便用户之间的交流——它们并不是一个密闭的 "this is locked down" 系统。如果您经常遇到开发人员因这些锁而发生冲突的问题,那么您需要在他们之间进行更好的沟通。

如果您的用户确实需要在本地编辑文件而不锁定,他们可以手动删除本地副本的只读属性 - 只要他们了解这样做的后果(他们不会能够 update/merge 直到他们 revert 他们的本地更改)。

另一种方法是使您的模型成为 "template" 并要求用户制作本地副本以供编辑之用。然后锁定、更新并提交 模板 ,当他们完成更改并准备好与他人共享时。参见 the Subversion FAQ for more。但是您仍然需要处理合并问题。同样,通信 是这里的解决方案,而不是软件。