2015-10-05 50 views
9

我无法说服我的组织中的其他人以停止在结帐时不加区分地锁定文件。任何想法,我可以找到一个“官方”文件,解释为什么应该谨慎使用结账锁? Microsoft建议:TFS结帐锁定最佳实践

最佳做法是,使用锁类型选项谨慎和 为什么要锁定一个项目通知你的队友,当你打算 解除锁定。

但没有涉及任何细节。

任何我能指出的东西都会很有帮助。

+1

我认为这取决于您的语言/平台,无论您是否锁定文件,在我的组织中,我们都使用TFS和Microsoft Access,这几乎不可能成功合并文件,所以我们只是锁定文件以防止其他更改在我们做出改变时发生。 – Siada

回答

8

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

签出时锁定文本文件(即代码)可能是生产力的严重障碍。我曾经在一个同事不在的时候看到过自己,他们对文件有独占锁。突然之间,这是一个蠢蠢欲动的时间。当您尝试排除故障或修复时间紧迫的问题时,情况会更糟糕。

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

这通常是有症状的一个或更多的东西:

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

有没有时候对代码文件的排他锁是好的和有用的?也许,但我不能想到它解决的问题,不能通过使用其他更合适的源代码控制功能来解决。

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