有没有办法在锁定该文件之前强制更新 SVN 文件?
Posted
技术标签:
【中文标题】有没有办法在锁定该文件之前强制更新 SVN 文件?【英文标题】:Is there a way to force an SVN file update before locking that file? 【发布时间】:2021-11-26 20:12:27 【问题描述】:问题: SVN 中有没有办法在二进制文件被锁定时强制更新文件?通过强制锁定操作在编辑之前将文件更新到最新版本,这似乎可以解决我们在下面遇到的问题。
背景: 作为电气工程师,我在工作中使用 SVN (TortoiseSVN) 进行修订控制。我们在 SVN 中拥有的许多文件都是二进制设计文件,如果发生冲突则无法合并。在这些二进制设计文件中,我们设置了“svn:needs-lock”属性。
问题: 我们遇到过一些案例,其中两名工程师(工程师 A 和工程师 B)有一个二进制文件(文件 1)在同一修订版(修订版 1000)中检出。 Eng A 锁定 File 1,进行编辑,然后提交 File 1,这意味着 Eng A 现在拥有 Revision 1001 的 File 1。
现在 Eng B 想要对文件 1 进行编辑。但是,即使 SVN 存储库中的最新更改是 Revision 1001,他仍在使用 Revision 1000。Eng B 锁定文件 1,进行编辑,然后提交他的更改现在是修订版 1002。
这里的问题是,当 Eng B 做出提交时,他的编辑不是基于 Eng A 在 Revision 1001 的更改,而是基于他“过时”的 Revision 1000。这导致 Eng A 在 Revision 1001 的更改被删除.
【问题讨论】:
【参考方案1】:不幸的是,在大多数用例中,仅使用 svn:needs-lock
属性是行不通的。这是因为 svn 会尝试使用文件系统级别的权限来使文件只读。然后由二进制文件的应用程序通知用户文件是否处于只读状态。但是大多数现代应用程序只是简单地删除只读标签并开始覆盖。你可以阅读更多关于为什么它没有以硬方式实现的信息here。这里的信息显示了锁定策略的“更软”的颠覆方法。
我曾尝试使用pre-lock
和post-lock
挂钩脚本实施更严格的锁定策略。但是从管理的角度来看,维护变得太耗时了。
pre-lock
和 post-lock
通知对于至少较小的团队 (10-15) 而言,在没有管理员头疼的情况下产生了奇迹。
每当有人锁定路径时,就会向组中的人发送通知,通知该文件已使用锁定路径的用户的名称锁定,提醒用户不要锁定它们或更新它们。
当锁被释放时,会向组发送另一个通知,通知该锁可以使用。
这种非常简单的锁定和解锁通信将工作覆盖率降低到几乎为 0。仍有一些新人刚开始工作,没有检查文件是否被锁定。
【讨论】:
以上是关于有没有办法在锁定该文件之前强制更新 SVN 文件?的主要内容,如果未能解决你的问题,请参考以下文章