323

在 TFS 中搁置仅仅是一种软签入,以便其他团队成员可以看到源代码吗?

即搁置的代码不会被编译吗?

4

8 回答 8

463

搁板有很多用途。主要有:

  1. 上下文切换:保存当前任务的工作,以便您可以切换到另一个高优先级任务。假设您正在开发一项新功能,并专注于自己的业务,这时您的老板跑进来说“啊!Bug Bug Bug!” 并且您必须放弃对该功能的当前更改并修复错误。您可以搁置您在功能上的工作,修复错误,然后回来并取消搁置以处理您的更改。
  2. 共享变更集:如果您想在不签入的情况下共享代码变更集,您可以通过搁置它来方便其他人访问。当您将不完整的任务传递给其他人(可怜的灵魂)时,或者如果您有某种测试代码,您永远不会签入其他人需要运行的代码,这可以使用。h/t对其他关于使用它进行评论的回复,这是一个非常好的主意。
  3. 保存进度:在处理复杂功能时,您可能会发现自己处于想要保存进度的“好点”。这是搁置代码的理想时机。假设您正在修改一些 CSS / HTML 来修复呈现错误。通常你会猛烈抨击它,迭代你能想到的每一个可能的组合,直到它看起来正确。但是,一旦它看起来正确,您可能想要尝试返回以清理您的标记,以便其他人在您签入之前能够理解您所做的事情。在这种情况下,您可以在一切都呈现正确时搁置代码,那么你就可以自由地去重构你的标记,知道如果你不小心再次破坏了它,你总是可以回去获取你的变更集。

还有其他用途吗?

于 2009-02-18T09:37:18.343 回答
111

搁置是一种无需签入即可将所有更改保存在您的盒子上的方法。这些更改会保留在服务器上。在以后的任何时候,您或您的任何队友都可以将它们“搁置”回您的任何一台机器上。

它也非常适合用于审查目的。在我的团队进行检查时,我们搁置了我们的更改并发送了一封电子邮件,其中包含更改描述和变更集的名称。然后团队中的人员可以查看变更集并提供反馈。

仅供参考:查看搁置集的最佳方法是使用以下命令

tfpt 审查/搁置集:搁置集名称;用户名

tfpt 是 Team Foundation Power Tools 的一部分

于 2009-02-17T14:20:01.853 回答
37

这是正确的。如果您创建了一个书架,其他执行获取最新信息的人将看不到您的代码。

它将您的代码更改放到服务器上,这可能比您的工作 PC 得到更好的备份。

如果您有在家工作的冲动,它使您能够在另一台机器上获取您的更改。

其他人可以看到您的书架(尽管我认为这可能是可选的),因此他们可以在签入之前查看您的代码。

于 2009-02-17T14:20:29.933 回答
21

在很多这些讨论中遗漏的一点是,您如何在搁置更改的同一台机器上恢复。也许对大多数人来说是显而易见的,但对我来说不是。我相信您执行撤消挂起的更改 - 对吗?

我理解的过程如下:

  1. 要搁置您当前的待定更改,请右键单击项目,搁置,添加搁置名称
  2. 这将保存(或搁置)对服务器的更改(没有人会看到它们)
  3. 然后,您执行撤消挂起的更改以将您的代码恢复到最后一个签入点
  4. 然后,您可以使用还原的代码基线做您需要做的事情
  5. 您可以随时取消搁置更改(可能需要一些合并冲突)

因此,如果您想开始一些您可能需要搁置的工作,请确保在开始之前签入,因为签入点是您在执行上述撤消挂起更改步骤时将返回的位置。

于 2015-10-23T08:58:23.723 回答
14

我一直遇到这个,所以关于分支的补充信息:

如果您正在使用多个分支,则搁置集与您创建它们的特定分支相关联。因此,如果您让变更集在货架上生锈太久而不得不将其搁置到不同的分支,那么您必须使用 7 月发布的电动工具来做到这一点。

tfpt unshelve /migrate
于 2009-02-17T14:54:54.000 回答
2

搁置就像您的更改已存储在源代码管理中,而不会影响现有更改。意味着如果您在源代码管理中签入文件,它将修改现有文件,但搁置就像在源代码管理中存储您的更改但不修改实际更改。

于 2018-01-24T18:34:23.247 回答
1

@JaredPar:是的,您可以使用 Shelvesets 进行评论,但请记住,shelvesets 可以被您/其他人覆盖,因此不是长期稳定的。因此,对于监管相关的审查,您永远不应使用 Shelveset 作为基础,而应使用签入(变更集)。对于非正式的审查是可以的,但对于正式的(例如与 FTA 相关的)审查是不行的!

于 2016-04-13T07:36:53.757 回答
0

如果您使用的是 Gated 构建,则在触发构建时,它会创建一个工作区的搁置集,用于提交构建。如果构建失败,则搁置集被拒绝。如果构建成功,则会创建一个变更集并将其提交给 TFS。在任何一种情况下,执行签入/构建的人都必须协调工作区,这就像执行获取最新消息一样简单。

于 2016-05-19T21:22:43.063 回答