什么是TFS货架?

时间:2009-02-17 14:15:32

标签: tfs shelve

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

即。搁置的代码不能正确编译?

8 个答案:

答案 0 :(得分:439)

搁架有很多用途。主要是:

  1. 上下文切换:保存当前任务的工作,以便切换到另一个高优先级任务。假设你正在开发一项新功能,专注于自己的业务,当你的老板跑进去说“啊!Bug Bug Bug!”并且您必须删除该功能的当前更改并修复该错误。您可以将您的工作搁置在该功能上,修复该错误,然后返回并取消保留以便稍后处理您的更改。
  2. 共享更改集:如果您希望在不签入代码的情况下共享代码更改集,则可以通过搁置来轻松访问其他人。当你将一个不完整的任务传递给其他人(可怜的灵魂)或者如果你有一些你永远不会检查其他人需要运行的测试代码时,可以使用这个。 h/t关于将其用于评论的其他回复,这是一个非常好的主意。
  3. 保存您的进度:当您处理复杂功能时,您可能会发现自己处于一个“好点”,希望保存您的进度。这是搁置代码的理想时间。假设您正在破解一些CSS / HTML来修复渲染错误。通常你会砰的一声,重复你可以想到的每一个可能的kludge,直到它看起来正确。但是,一旦看起来正确,您可能想尝试重新清理标记,以便其他人可以在您签入之前了解您所执行的操作。在这种情况下,您可以在所有内容渲染时搁置代码,然后你可以自由地重构你的标记,知道如果你不小心再次破坏它,你可以随时返回并获得你的变更。
  4. 还有其他用途吗?

答案 1 :(得分:102)

搁置是一种在不签入的情况下保存盒子上所有更改的方法。更改将保留在服务器上。在任何以后,您或您的任何队友都可以“取消”他们的任何一台机器。

它也非常适合审核目的。在我的团队办理入住手续时,我们会搁置我们的更改并发送一封电子邮件,其中包含更改说明和变更集的名称。然后,团队成员可以查看变更集并提供反馈。

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

  

tfpt review / shelveset:shelvesetName; userName

tfpt是Team Foundation Power Tools的一部分

答案 2 :(得分:33)

没错。如果您创建了一个架子,那么其他进行最新操作的人将无法看到您的代码。

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

如果您有在家工作的冲动,它可以让您在另一台机器上接收更改。

其他人可以看到您的货架(虽然我认为这可能是可选的),因此他们可以在办理登机手续之前查看您的代码。

答案 3 :(得分:14)

我总是遇到这种情况,所以有关分支的补充信息:

如果您正在使用多个分支,则搁置集与您创建它们的特定分支相关联。因此,如果你让架子上的变速器生锈时间过长并且不得不脱离另一个分支,那么你必须使用7月发布的电动工具。

tfpt unshelve /migrate

答案 4 :(得分:13)

在很多这些讨论中遗漏的一点是你如何恢复你搁置变更的SAME机器。也许对大多数人来说显而易见,但对我来说并非如此。我相信您执行撤消待定更改 - 是吗?

我理解过程如下:

  1. 要搁置当前待处理的更改,请右键单击项目“搁置”,添加搁置名称
  2. 这将保存(或搁置)对服务器的更改(没有人会看到它们)
  3. 然后执行撤消待处理更改以将代码还原为上一个登记点
  4. 然后,您可以执行恢复代码基线所需的操作
  5. 你可以Unshelve the changes at any time(可能需要一些合并冲突)
  6. 因此,如果你想开始一些你可能需要搁置的工作,请确保在开始之前办理登机手续,因为办理登机手续时点是你在撤销待办事项变更时返回的地方上面的步骤。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

@JaredPar: 是的,您可以使用Shelvesets进行评论,但请记住,搁置集可能会被您自己/其他人覆盖,因此不会长期稳定。因此,对于监管相关的审查,您不应该使用Shelveset作为基础,而是使用checkin(Changeset)。 对于非正式的审查,这是正常的,但不适用于正式(例如FTA相关)审查!

答案 7 :(得分:0)

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