|
|
1
14
|
|
|
2
7
这通常取决于你的项目和团队。悲观锁定是好的,因为它很容易理解——一次一个开发,不需要合并! 然而,糟糕的是,每次只有一个开发人员。我现在的情况是,一位同事去了现场,在他离开之前,他检查了所有东西,这样如果他必须修复任何错误,他就可以回来检查他所有的更改……这对他来说很好,对我和基地的其他开发团队来说很糟糕。 如果你能绕过团队中的悲观锁定,那么使用它是可以的,事实上,人们讨厌它的最大原因是它的Visual SourceSafe的默认做法。如果你对合并大量更改没有信心,那么你还有另一个理由使用它——如果你曾经使用过乐观的锁定SCM,并进行过合并,你就会知道恢复有多难。 如果你能处理合并,那么乐观锁定更优越,我会推荐它,但如果你不想使用它,你不必交上你的极客卡。 |
|
|
3
6
我一次又一次地看到这种情况发生。开发人员这样做是因为这个过程很烦人:
悲观的锁定感觉就像业余时间,抱歉。 |
|
4
4
|
|
|
5
3
如果开发人员无法处理合并和修复冲突,他应该接受再教育。 即使是小文件也会发生冲突,例如,对于JSP,一个人(web开发人员)可能会更改布局代码,而其他人可能会更改JSP正在使用的模型的API。 |
|
|
6
3
关于Bob和John的情况,像svn这样的协作系统并不能像锁定系统那样阻止这种情况。我可以“更新”FooBar.java,它使svn确信我拥有最新版本,然后在本地删除该文件,并用我自己制作的个人副本覆盖它,而不考虑基线版本,然后签入,愉快地销毁了其他人的更改。 无论是否锁定,没有任何系统可以阻止这一点,所以我认为甚至没有必要将其纳入辩论。 真正的问题是决定你的平衡是什么 合并错误的可能性 vs。 人们锁定文件造成的不便 无论是锁定系统还是非锁定系统都是“优越的”这一概念都是无稽之谈。
我使用了VSS,在默认的完全锁定模式下,有6名开发人员,它的工作原理如下
一个梦。偶尔,有人会忘记解锁,我们不得不追捕他们或手动解锁,并在他们回来时手动合并,但是
这是非常小的。我曾多次看到svn搞砸了它的自动合并,所以我并不真正信任它。当两个人以无法自动合并的方式更改了同一个文件时,它并不总是标记为“冲突”。
我的观点是,这不是一场明智的辩论。任何一个系统的成功都会下降 当冲突点发生时,你如何管理它们,而不是一个系统是否 或者另一个更好。 |
|
7
2
悲观锁定(个人经验)阻碍了合作。它有时很容易被良好的团队沟通所取代。只要说“嘿,我要处理这几个文件一段时间”。 我在2到6人的团队中工作过,没有锁定,除了一些通常和必要的合并外,我们从来没有遇到过问题。 我也曾尝试过锁定 Visual SourceSafe 托管项目。依我之见,这适得其反。 |
|
|
8
1
软件开发人员总是乐观主义者——看看他们的估算技巧就知道了! 在实践中,我们发现冲突很少见,不必担心锁定的好处超过了偶尔的冲突解决步骤。 |
|
|
9
1
如果是这样的话,是时候让“人类”负责并协调任何变化了。在理想情况下,如果你的项目管理很好,你很少会遇到试图更改锁定文件的时候,因为有人会协调事情,所以这实际上不会发生。 换句话说,你会知道“Bob”正在对组件X/Y/Z进行大量更改,如果你在组件X中修复了错误,你就知道在尝试提交更改之前要和Bob谈谈。 正如我所说,这是理想的;) |
|
|
10
1
如果可能发生严重冲突,悲观锁定是一个好主意。对于大多数编程,您不会看到任何严重的冲突,因此悲观锁定是毫无意义的。以下情况除外:
否则。.. |
|
|
a a · 为什么在这个可重入锁示例中需要引用计数? 3 年前 |
|
|
JohnLBevan · 为什么原子语句上需要锁提示? 7 年前 |
|
|
Jay Wang · 生产者/消费者实施:陷入消费者循环 7 年前 |
|
|
Andremoniy · 悲观写入是否锁定整个表? 7 年前 |
|
|
Marcus Cemes · 选择。。。用于更新在提交后选择旧数据 7 年前 |
|
|
Ins0maniac · Rails,锁定数据库中的记录 7 年前 |