在团队环境中与 Unreal 一起使用 Tortoise SVN。 我已经有十多年没有使用 SVN 了,只使用过 Perforce 和 Git。 我的理解是,SVN 的陷阱之一是,如果没有仔细的沟通,用户很容易“破坏”彼此的工作,因为默认情况下,在签出进行更改时,源存储库文件不会被锁定。
是否有某种方法,通过 Tortoise 或命令行,可以在检查修改时轻松锁定服务器文件,以便它们无法被覆盖?
您的理解仅部分正确。对于任何可以合并的内容(即源代码等文本数据),Subversion 都会竭尽全力防止破坏。对于无法合并的文件(即二进制文件),您可以强制用户在处理它们之前锁定它们。
一般来说,如果存储库中有修改文件的更新版本,Subversion 将拒绝提交。在这种情况下,Subversion 要求您
这是 Subversion 基本工作周期的简化版本,尤其是解决任何冲突。
让我们看看这对于可合并的数据和不可合并的数据意味着什么。
虽然破坏队友的工作并非完全不可能,但您需要主动放弃或覆盖他们的更改。虽然错误确实会发生,但 Subversion 本质上并不比 Git 或 Perforce 更容易出错。
默认锁定所有源代码文件会给团队带来不必要的限制。
对于二进制文件(你提到了 Unreal,所以我猜你会处理图像文件和 3D 模型),存在它们无法合并的问题。如果发生冲突,您只能决定使用“您的”或“他们的”,而不是介于两者之间。
为了防止这种情况,您可以选择将 svn:needs-lock
属性放在这些文件上,如
中所述在这两种情况下,都不能保证有人不会决定过于聪明或只是抛弃队友的“低劣”工作。忽视或滥用系统的可能性是存在的,没有任何工具能够阻止它。 在已经引用的红豆书中也有很好的
。
如果发生任何情况,您始终可以反向合并将更改恢复到最后的良好状态,如
撤消更改