首页 文章

阻止用户对togoise svn中的锁定文件执行“SVN更新”

提问于
浏览
2

有没有办法阻止用户对任何锁定的文件执行“SVN更新”或至少向他们显示一个msg,该文件被某人锁定?因为我们有一个基于oracle表单和报告v5.0的项目(我知道它很老:)) . 因为已知的oracle表单和报告以二进制格式存储它们的源文件 . 所以当发生冲突时我们无法比较两种形式 . 因此,通过阻止用户更新解决方案,他们知道某人正在处理此项目并且只是尝试在其他项目上工作,而不是在同一个项目上全天工作,而无法在一天结束时提交他们的更改(如果项目被锁定)或最终因冲突而无法解决 . 或至少在更新时锁定此项目的某些通知

附:我正在使用VisualSVN Server 2.7.3和TortoiseSVN 1.8.4 .

1 回答

  • 2

    为什么要阻止用户更新其工作副本? (顺便说一句,你不是在混淆svn updatesvn commit?) Describe and explain 我们的情况和你一般的任务 .

    如果该文件被另一个开发人员锁定,除了特定的开发人员之外,没有人可以对此文件进行 svn commit 更改 . 换句话说,只有锁所有者可以修改文件并提交它的更改(除非没有人破坏/窃取锁) .

    另一方面, svn update 命令使用存储库中的较新版本更新工作副本 . 该操作将更新存储库中某人锁定的文件 . 阻止用户更新其工作副本的唯一方法是在服务器端使用基于路径的授权规则来完全拒绝对特定用户的存储库的访问 .

    我建议阅读SVNBook | Locking部分,了解有关Apache Subversion中锁定机制的更多信息 .

    Update:

    SVNBook | Lock communication部分 . 本节介绍了您描述的问题 .

    • 您可以使用 svn:needs-lock 属性指示Subversion客户端在尝试修改特定(或所有)文件之前必须将其锁定 . 除非文件被锁定,否则它将被修改 .

    我看到你使用VisualSVN Server 2.7和TortoiseSVN 1.8,它们都基于Subversion 1.8 . Subversion 1.8客户端具有Repository Dictated Configuration功能 . 由于这个新功能,您可以使用新的Subversion svn:auto-props inherited属性在存储库中配置自动道具模式 .

    例如,如果你设置 svn:auto-props*.test = svn:needs-lock=* 在你的资料库的root属性(或库路径是项目的根,它主要取决于你的仓库结构)将导致成应用 svn:needs-lock=* 酒店每天新增 *.test 文件 .

    BTW,TortoiseSVN具有应用了 svn:needs-lock 属性的未锁定文件的特殊状态图标,请参阅TortoiseSVN manual .

相关问题