TFS结帐锁定最佳做法

时间:2015-10-05 13:35:43

标签: tfs

我难以说服组织中的其他人停止在结帐时不加选择地锁定文件。有什么想法,我可以找到一个“官方”文件,解释为什么应该谨慎使用结账锁? Microsoft建议:

  

作为最佳做法,请谨慎使用“锁定类型”选项   通知你的队友锁定物品的原因,以及你的计划   删除锁。

但没有详细说明。

我能指出的任何事情都会非常有帮助。

2 个答案:

答案 0 :(得分:9)

虽然我没有正式的Microsoft源代码,但我是应用程序生命周期管理的MVP,所以希望这足以让这个引人注目。 :)

在结账时锁定文本文件(即代码)可能会严重阻碍生产力。当我在同事工作的时候,我自己已经看到了,并且他们对文件进行了独占锁定。突然间,这是一个大拇指蹒跚的时间。当您尝试排查或修复时间紧迫的问题时,情况会更糟。

人们想要锁定文件以进行独占编辑的最常见原因是因为他们不想在以后执行混乱的合并。

这通常是一件事或多件事的症状:

  • 独占锁定的文件太大(一个文件中包含很多类,一个"上帝类"它做太多事情等)。解决此问题的方法是根据单一责任原则将代码重构为更小,更孤立的类。或者,如果你绝对必须,并且你在.NET世界中工作,滥用partial关键字将同一个类分割为多个文件,尽管我想要记录并说明每一个时间我在代码库中看到这一点,它让我哭了一阵无限悲伤。
  • 独家锁定的文件正在进行重大的长期重构。这里的解决方案是隔离分支内的主要变化,频繁地反向集成从主干到分支的变化。
  • 进行更改的人并不喜欢合并。我无法帮助你。如果您在没有提交代码很长时间的情况下持有代码会让合并变得很痛苦,那么您就不会经常提交代码。如果您因为尚未完成代码而未提交代码,但更改仍在进行中,并且您不希望干扰其他代码'工作,然后你没有正确使用分支。

有时候对代码文件的独占锁是好的还是有用的?可能,但我无法想到它解决的问题,可以通过使用其他更合适的源代码控制功能解决这个问题。

如果可以,请使用本地工作区,因为他们不会强制执行排他锁。

答案 1 :(得分:0)

对我来说,当我签入* .sln或* .csproj文件中的更改时,排他锁变得很有用。否则,在执行并发签入时会出现问题,因为VS似乎将这些文件缓存在内存中而不保存到磁盘。