Shelveset 没有变更集的自然顺序。这会导致很多合并冲突。
我在这里看不到你的意思,对你来说什么是“自然排序”?当您开始在团队中工作时,变更集的年表不会遵循给定的顺序。
如果开发人员在审核之前无法签入代码,则依赖审核者,如果审核者在短时间内不进行审核,这些搁置集可能会干扰其他任务。
同样,您在“常规任务开发”中遇到相同的情况,这不是因为您在任务 B 之前启动任务 A,您将在 B 之前签入任务 A(除非 B 依赖于 A,但这不是重点)。将审查视为任务开发工作流程的最后一步。对审阅者的依赖确实让事情变得更复杂一些,但这是为了有一个稳定的构建并且有符合公司标准的代码。
与其他开发人员的协作变得很痛苦,因为现在您需要传递搁置集而不是签入代码,这可能会在未来再次导致合并冲突。
你知道比搁置更容易的东西吗?您是否喜欢在 zip 文件中发送包含修改后代码的电子邮件?当您不想影响引用时,搁置集是在开发人员之间共享代码的更简单的方法。再次在这里,我看不到您提到的合并冲突问题。
这里有一些建议:
当有人取回另一个开发者的搁置集时,假设开发者 A 创建了一个搁置集,而开发者 B 想要查看它,请确保开发者 B 有一个单独的干净且专用的工作区来取消搁置。您不想在常规的“开发”工作区中搁置一些东西。用于代码审查的专用工作区缓解了您提到的合并冲突问题。
理论上,所有内容都应该在集成到目标分支之前进行审查。话虽如此,实际上这样做更难,所以如果你的团队没有这种流程的习惯,就不要力求做到完美。熟悉他正在处理的应用程序的高级开发人员可以被授权在审查之前签入。这完全是一个权衡问题,在这种情况下,您可以获得灵活性和更流畅的开发体验,但您的引用可能会在质量和稳定性方面受到影响。这里没有真正的赢家,这是您根据对您来说重要的事情做出的选择。
不要使用分支进行代码审查。
我同意在 VS/TFS 中通过shelfset 进行的代码审查体验有些不完整,但它比替代方案要好得多。微软意识到他们在这方面可以做得更好,这体现在 VS11/TFS11 中所做的改进。在下一个版本中,您将拥有真正的代码审查体验,仍然基于搁置集,但参与者之间的通信系统更加完整。这种改进是在“我的工作”体验中进行的,现在事情变得更加顺畅。尝试 tfspreview.com 和 VS11 beta 或阅读一些博客文章 (Brian Harry) 以获取更多信息。这是您会感兴趣的链接。