2012-04-27 98 views
7

的原因之一使用TFS搁置集是代码审查,我不同意,但这是惯例在我目前的项目。我看到使用TFS搁置集的原因是不是代码审查是一个好主意是TFS搁置集和代码审查

  • 搁置集没有自然排序的变化集有。这 可能会导致大量的合并冲突。
  • 如果直到它被审查开发商不能签入代码,提出对评审的依赖,如果审稿不很短的时间内完成审查这些搁置集 可以与其他任务干扰。
  • 与其他开发者的合作变得非常痛苦,因为现在您需要传递shelvesets,而不是签入代码,这可能会在未来再次导致合并冲突。

有人可以提供我一些指点它可以是的TFS搁置的办法进行审查,这样无论我得到信服的方法或我可以提出不使用这种方法的情况下?

+0

你看着使用分支与合并,而不是束之高阁的变化? – cordialgerm 2012-04-27 05:36:51

+0

@pickles,分支和合并只是为了审查目的而矫枉过正。分支和合并主要用于支持产品版本,开发团队,但我还没有听说过分支代码审查。 – Chandermani 2012-04-27 05:40:15

+0

@Chandermani在2011年ALM峰会上讨论过,有一些团队使用功能分支上的团队分支上的per-Developer分支。似乎过度杀伤,但他们的复杂项目真的从中受益。双向双向每日逆向集成直至开发商分支以维持合并能力。 – jessehouwing 2012-04-29 22:05:53

回答

11

我认为微软与你不同意就这一个了很多,在TFS 11条新的代码审查功能和Visual Studio 11是围绕搁置集建。真正的问题可能更多在于团队如何运作以及如何将任务分解到整个产品。

如果任务已经分解,使得他们几乎没有依赖关系,并使得在同一区域工作的工作紧密结合起来的人,那么你将不会有大约合并并签入任何问题。如果你的任务花费更多时间,那么定期从开发分支中获取最新版本,以便始终保持最新版本。

如果您看到审阅太慢,并且搁置集正在排队,所有等待进行审查,那么这是可能发生的其他实际问题。任务完成后应尽快审查,而不是等待审查。如果评论时间超过24小时,那么这可能成为一个真正的问题。您可以通过由其他人进行同行评审或在团队中获得更多评论者来缓解这种情况。

如果一切都失败了,您可以进行验尸检查(查看更改集而不是货架),TFS 11和Visual Studio 11也支持这种情况。

我个人的偏好是信任我的团队的开发人员,因此我们大多会进行入住后评论。如果我们有新的或非常初级的成员,那么我会确保有更高级的开发人员可以进行第一次签入前检查。

参见:

+1

现货!我一次又一次地面临着审阅者应有的有限带宽下搁置的问题。有时候团队成员需要研究相关的功能,然后必须通过搁置。我可以说明这种机制会失败的多个实例。我想我应该写一篇关于这方面的博客文章:)只有当我看到这可以成功时,如果审查发生在有限的时间范围内。 – Chandermani 2012-04-30 06:23:03

+1

如果需要,还可以考虑使用门控签入版本,并结合代码分析和所有单元测试的运行来获取签入代码的最低质量。这样你可能不需要单独检查每个签入。 – jessehouwing 2012-04-30 08:28:40

+0

针对tfs有2个开源流程模板插件,可为vs2010带来类似的审阅体验。查看演示文稿以获取指向他们的链接。 – jessehouwing 2012-04-30 09:10:08

2

这与其说这就是问题搁置。如果你坚持等待同行审查你的代码,代码的存储方式不会产生太大的变化。也就是说,shelveset可以安全地存储在您的计算机上,并且可以在审阅者可以访问的位置进行存储,所以我认为这与任何解决方案都是一样的。另一种方法是检入,传递变更集,如果它不通过集合或传递一个zip文件,则回复它们。两者都有明显的缺点。

那么,真正的问题你是否应该有所需的代码审查前检查?

+0

为什么在签入后不能检查代码。如果我能确保代码不与任何现有的流程集成,我应该能够签入并给予审查。 – Chandermani 2012-04-27 06:56:04

+1

我不明白的是,你显然很在意合并问题,所以如果你在签入后进行审查,它很可能会增加给定任务的变更集计数。更多变更等于更难合并... – Nock 2012-04-27 11:38:39

6

搁置没有一个自然顺序为改变集都有。这可能导致大量的合并冲突 。

我在这里看不到你的观点,什么是你的“自然排序”?当您开始在团队中工作时,变更集的年表不符合给定的顺序。

如果直到它被审查开发商不能签入代码,穿审稿一个 依赖,如果审稿不很短的时间内完成审核 这些搁置集可以与其他 任务干扰。

同样,您与“定期任务开发”的情况相同,这不是因为您在任务B之前启动任务A,您将在B之前签入任务A(除非B依赖于A,但这不是重点)。考虑审查作为任务发展工作流程的最后一步。对审稿人的依赖确实使事情变得更加复杂一些,但这是为了获得稳定的构建并使代码符合公司的标准。

与其他开发者

协作变得疼痛,现在你需要传递 搁置周围,而不是签入代码,它可以再次导致合并在未来 冲突。

你知道的东西比搁置集更容易?你是否喜欢用一个zip文件发送带修改过的代码的电子邮件?当你不想影响参考时,搁置集是迄今为止更容易在开发人员之间共享代码的方法。在这里,我再也看不到你提到的合并冲突问题。

下面是一些建议:

  1. 当某人正在恢复其他开发人员的搁置,说开发一个创建搁置和开发乙要对审查,确保开发B有一个独立的清洁专门的工作空间来取消搁置。你不想在常规的“开发”工作区中取消搁置的东西。用于代码审查的专用工作空间可以缓解您提到的合并冲突问题。

  2. 从理论上讲,一切都应该被集成到目标分支之前进行审查。话虽这么说,这是在现实中很难做到这一点,所以不要做的目的完美的东西,如果你的球队没有这种过程的习惯。一位熟悉他正在工作的应用程序的高级开发人员可以被授权在审查之前办理登机手续。这完全是一个折衷的问题,在这种情况下,您可以获得灵活性和平滑的开发体验,但是您的参考可能会受到质量和稳定性的影响。这里没有真正的赢家,这是你选择对你来说重要的选择。

  3. 不要使用分支代码审查。

  4. 我同意的代码审查通过搁置的经验是在VS/TFS有些不完整,但它的方式更好的替代品。微软意识到他们可以在这方面做得更好,并且转化为VS11/TFS11的改进。随着未来版本你有真正代码审查的经验,仍然是基于搁置,但与演员之间的更完整的通信系统。这种改善是在“我的工作”体验中做出的,现在事情变得更加顺畅。试试tfspreview.com和VS11 beta或阅读一些博客文章(Brian Harry)以获取更多信息。这里是a link你会感兴趣的。

+1

感谢您的详细解释。我仍然认为办理登机手续是正确的选择。只要不进行工作流程整合就可以完成检查,这比使用shelveset好得多。当我正在处理与其他开发者没有依赖关系的东西时,搁置架很好。 – Chandermani 2012-04-27 11:15:40