Tortoise SVN 和 Unreal - 锁定服务器存储库上的特定文件

问题描述 投票:0回答:1

在团队环境中与 Unreal 一起使用 Tortoise SVN。 我已经有十多年没有使用 SVN 了,只使用过 Perforce 和 Git。 我的理解是,SVN 的陷阱之一是,如果没有仔细的沟通,用户很容易“破坏”彼此的工作,因为默认情况下,在签出进行更改时,源存储库文件不会被锁定。

是否有某种方法,通过 Tortoise 或命令行,可以在检查修改时轻松锁定服务器文件,以便它们无法被覆盖?

svn version-control tortoisesvn unreal-engine5
1个回答
0
投票

您的理解仅部分正确。对于任何可以合并的内容(即源代码等文本数据),Subversion 都会竭尽全力防止破坏。对于无法合并的文件(即二进制文件),您可以强制用户在处理它们之前锁定它们。

一般来说,如果存储库中有修改文件的更新版本,Subversion 将拒绝提交。在这种情况下,Subversion 要求您

  • 先更新
  • 在本地合并并解决冲突(如果有)
  • 最终提交一个干净的版本

这是 Subversion 基本工作周期的简化版本,尤其是解决任何冲突

让我们看看这对于可合并的数据和不可合并的数据意味着什么。

可合并的文件(源代码)

虽然破坏队友的工作并非完全不可能,但您需要主动放弃或覆盖他们的更改。虽然错误确实会发生,但 Subversion 本质上并不比 Git 或 Perforce 更容易出错。

默认锁定所有源代码文件会给团队带来不必要的限制。

无法合并的文件(二进制文件)

对于二进制文件(你提到了 Unreal,所以我猜你会处理图像文件和 3D 模型),存在它们无法合并的问题。如果发生冲突,您只能决定使用“您的”或“他们的”,而不是介于两者之间。 为了防止这种情况,您可以选择将 svn:needs-lock 属性放在这些文件上,如

在编辑之前强制用户在 SVN 中锁定文件

中所述
在这两种情况下,都不能保证有人不会决定过于聪明或只是抛弃队友的“低劣”工作。忽视或滥用系统的可能性是存在的,没有任何工具能够阻止它。

在已经引用的红豆书中也有很好的
锁定模型的解释

如果发生任何情况,您始终可以反向合并将更改恢复到最后的良好状态,如

撤消更改

中所述或此处:SVN反向合并?

© www.soinside.com 2019 - 2024. All rights reserved.