svn - 防止用户对 tortoise svn 中的锁定文件执行 "SVN update"

标签 svn tortoisesvn visualsvn-server

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

附注 我正在使用 VisualSVN Server 2.7.3 和 TortoiseSVN 1.8.4。

最佳答案

为什么要阻止用户更新其工作副本? (顺便说一句,您是否将 svn updatesvn commit 混淆了?)描述并解释我们的案例以及您的一般任务。

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

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

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

更新:

参见SVNBook | Lock communication部分。本节涵盖您所描述的问题。

  1. 您可以使用 svn:needs-lock 属性来指示 Subversion 客户端在尝试修改特定(或所有)文件之前必须锁定它们。除非文件被锁定,否则它处于只读状态并且无法修改。

    我看到您使用的是VisualSVN Server 2.7和TortoiseSVN 1.8,它们都基于Subversion 1.8。 Subversion 1.8 客户端具有 Repository Dictated Configuration 。借助这项新功能,您可以使用新的 Subversion svn:auto-props 继承属性在存储库中配置 auto-props 模式。

    例如,如果您将存储库根目录上的 svn:auto-props 值设置为 *.test = svn:needs-lock=* 属性(或者代表项目根的存储库路径,它主要取决于您的存储库结构)将导致每个新添加的 *.test 文件具有 svn:needs-lock=*应用属性(property)。

    顺便说一句,TortoiseSVN 对于应用了 svn:needs-lock 属性的未锁定文件有特殊的状态图标,请参阅 TortoiseSVN manual .

  2. 您可以设置post-lockpost-unlock存储库上的 Hook 脚本。当有人锁定或解锁存储库中的文件时,这些 Hook 脚本可用于实现邮件通知。在 SVNBook | Implementing Repository Hooks 中了解有关 Subversion Hook 脚本的更多信息。 .

关于svn - 防止用户对 tortoise svn 中的锁定文件执行 "SVN update",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489277/

相关文章:

tortoisesvn - SVN不小心提交了带密码的文件

svn - VisualSVN 服务器需要用户名和密码

svn - 在使用 nas 驱动器作为文件存储库的 Windows 上安装 subversion 的教程

svn - 如何在 CodePlex 上镜像 SVN 存储库?

visual-studio - 基本 SVN 用法

svn - 如何修复 TortoiseSVN 中的虚假日期错误

windows - 我如何为我们的 Subversion 设置解决 "405 Method Not Allowed"?

svn - VisualSVN 存储库中的 "format"文件是什么?

linux - 多人项目上的 SVN 补丁/差异管理

macos - 在 Mojave 中打开 DiffMerge SnailSVN 的问题