Version control 为什么要避免版本控制系统中的悲观锁定?
根据我读到的一些关于版本控制的帖子,人们似乎认为版本控制系统中的悲观锁定是一件坏事。为什么?我知道这会阻止一个开发人员在另一个开发人员签出文件时提交更改,但那又怎样呢?如果您的代码文件太大,以至于经常有多个人同时处理它们,我建议您重新组织代码。将其分解为更小的功能单元Version control 为什么要避免版本控制系统中的悲观锁定?,version-control,locking,Version Control,Locking,根据我读到的一些关于版本控制的帖子,人们似乎认为版本控制系统中的悲观锁定是一件坏事。为什么?我知道这会阻止一个开发人员在另一个开发人员签出文件时提交更改,但那又怎样呢?如果您的代码文件太大,以至于经常有多个人同时处理它们,我建议您重新组织代码。将其分解为更小的功能单元 即使使用良好的版本控制系统提供的工具,并发代码更改的集成也是一个乏味且容易出错的过程。我认为如果可能的话应该避免。那么,为什么不鼓励悲观锁定呢?软件开发人员总是乐观主义者——看看他们的评估技能就知道了 在实践中,我们发现冲突很少,
即使使用良好的版本控制系统提供的工具,并发代码更改的集成也是一个乏味且容易出错的过程。我认为如果可能的话应该避免。那么,为什么不鼓励悲观锁定呢?软件开发人员总是乐观主义者——看看他们的评估技能就知道了 在实践中,我们发现冲突很少,不必担心锁定的好处超过了偶尔的冲突解决步骤
- 你并不总是可以选择
将文件分开
- 配置文件
- XML文件
- 即使相对较小的文件也可以包含多个开发人员需要访问的不同部分
- 图书馆
- 公用事业
- 合并工具比以往任何时候都更加智能
- 冲突相当罕见
- 减少由于开发人员“意外”签出文件而导致的延迟
即使是很小的文件也会发生冲突,例如与JSP冲突,一个人(web开发人员)可能会更改布局代码,其他人可能会更改JSP使用的模型的API。这通常取决于您的项目和团队。悲观锁定很好,因为它很容易理解-一次一个开发人员,不需要合并 然而,它的缺点恰恰是——一次开发一个开发人员。我现在的情况是,一位同事去了现场,在他离开之前,他检查了所有的东西,这样如果他必须修复任何错误,他就可以回来检查他在……中的所有更改。。。。对他来说很好,对我和基地的其他开发团队来说很糟糕 如果你能在你的团队中绕过悲观锁定,那么使用它就可以了,事实上,人们讨厌它的最大原因是因为它的visualsourcesafe默认做法。如果您对合并大量更改没有信心,那么您还有另一个使用它的理由-如果您曾经使用过乐观锁定SCM,并完成了合并,您将知道恢复有多困难 如果你能处理合并,那么乐观锁定就更好了,我建议你使用它,但如果你不想使用它,你不必交上你的极客卡
正如我所说,这是理想的;) 如果可能发生严重冲突,悲观锁定是个好主意。对于大多数编程来说,您不会看到任何严重的冲突,因此悲观锁定是毫无意义的。以下情况除外:
- 处理无法真正合并的二进制文件——艺术资源(模型、纹理等)就是一个很好的例子
- 与不知道如何合并、不想学习的非技术用户合作(大多数是艺术家,但一些技术作家也会对此大发雷霆)
- 处理非常大的文件,由于其高度的复杂性,这些文件不容易合并或分解为较小的文件(从未见过这样的情况,但我相信这是可能的)
否则…关于Bob和John的案例,像svn这样的合作系统不会像锁定系统那样阻止这种情况。我可以“更新”FooBar.java,这使svn确信我有最新版本,然后在本地删除该文件并用我自己的个人密码覆盖它