我正在使用VisualSVN Server将我的文件存储在存储库中。然后我使用TortoiseSVN客户端检查它们。我想确保当一个客户端锁定并开始处理文件时,其他客户端也不应该对同一个文件进行更改。当他们签出存储库时,他们应该将文件视为“只读”。
为了做到这一点,我去了TortoiseSVN的配置文件并添加了属性"*.* = svn:needs-lock=true"
,我还在服务器端和客户端都取消注释了行enable-auto-props = yes
以确定。但是在进行锁定之后,其他客户端仍然能够修改文件,尽管他们无法提交,因为已经锁定了。
任何人都可以看看这个并告诉我我做错了什么?
答案 0 :(得分:1)
Auto-props指示Subversion自动设置新添加或导入的文件的属性。它不会触及存储库中已存在的文件。见http://svnbook.red-bean.com/en/1.8/svn.advanced.confarea.html#svn.advanced.confarea.opts
要实施锁定 - 修改 - 解锁模型,您需要执行以下常规步骤:
第一步是在文件上设置svn:needs-lock
属性。将svn:needs-lock
应用于文件后,该文件将获得只读属性。在编辑文件之前,应该明确锁定它(这个事实反映在存储库中)。提交锁定后默认释放。
然后你可以实现某种锁定策略(参见 http://svnbook.red-bean.com/en/1.8/svn.advanced.locking.html#svn.advanced.locking.break-steal) 限制一些用户无法窃取锁,
您可以设置pre-and--post锁定和解锁挂钩以进行通知 用户(或管理员)文件已被锁定或解锁,何时和 由谁。
我强烈建议您仔细阅读以下SVNBook部分:
答案 1 :(得分:0)
使用名为Commit Policy的JIRA加载项,您可以拒绝与正则表达式或glob表达式不匹配的已修改文件:
"更改的文件必须与模式匹配"条件
验证已提交的文件,包括已修改,添加,删除或以其他方式触摸的文件。
它将正则表达式或glob模式与提交中包含的每个文件进行匹配。仅当模式匹配所有文件路径时才满足条件。
使用此条件类型,您可以锁定单个或多个文件(glob):
!({*/README.txt,README.txt})
...单个或多个目录(glob):
!(src/main/java/com/company/internal/)
或这些的任何组合。
查看更多示例here。