TFS中的货架是什么?


Answers:


453

货架有很多用途。主要的是:

  1. 上下文切换:保存当前任务的工作,以便您可以切换到另一个高优先级任务。假设您正在开发一项新功能,当老板上班时说“啊!并且您必须放弃对该功能的当前更改并修复错误。您可以搁置该功能的工作,修复该错误,然后返回并搁置以稍后进行更改。
  2. 共享变更集:如果您想共享代码变更集而不签入,则可以通过搁置它使其他人易于访问。当您将不完整的任务传递给其他人(可怜的灵魂)时,或者如果您拥有某种测试代码,则永远不会检查是否需要其他人来运行,可以使用此方法。H / T约使用本作评论其他答复,这是一个非常不错的主意。
  3. 保存进度:在使用复杂功能时,您可能会发现自己想要保存进度的“好时机”。这是搁置代码的理想时间。假设您要修改一些CSS / HTML来修复渲染错误。通常,您会不停地反复尝试,反复尝试可能想到的所有纠缠,直到看起来正确为止。但是,一旦看起来正确,您可能想要尝试回去清理您的标记,以便其他人可以在签入之前理解您所做的事情。在这种情况下,可以在所有内容正确显示后搁置代码,那么您可以自由地重构标记,知道如果您不小心再次破坏了标记,则可以随时返回并获取更改集。

还有其他用途吗?


16
当搁置变更集时,可以在本地保存待处理的更改(对2或3有用),或者不保存(对1有用)
dumbledad 2014年

2
有关搁置Visual Studio文档还有一些其他上下文以及如何提供信息。
整体开发人员

1
门控构建还使用它来存储更​​改,直到完成最终提交为止。
ToreØstergaard18年

我注意到的一件事是,搁置更改并不一定会还原代码,也不会更改要检入的文件的状态。因此,在进行这些更改(例如bug更改)时,如何避免将bug更改代码与您的搁置代码?
雅克

刚刚意识到,当您选择将更改集保留在本地时,文件仍保持签出状态。
雅克

105

搁架是一种将所有更改保存在盒子上而无需检入的方法。这些更改将永久保存在服务器上。以后,您或您的任何队友都可以将他们“搁置”回您的任何一台机器上。

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

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

tfpt评论/ shelveset:shelvesetName; userName

tfpt是Team Foundation Power Tools的一部分


6
应当指出,今天没有理由手动搁置更改并通过电子邮件发送信息。现代过程是请求代码审查。
ChiefTwoPencils's

34

那就对了。如果创建架子,则其他人在获取最新消息时将看不到您的代码。

它将您的代码更改存储到服务器上,这可能比工作PC更好。

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

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


那就对了。如果创建架子,则其他人在获取最新消息时将看不到您的代码。 这意味着1)当我将代码签入TFS时,我的团队成员是否可以获取最新的代码,将在他的系统中看到该代码?2)那么这意味着我们通过哪个帐户搁置了代码,只有从同一帐户中我们才能看到搁置的代码?如果我错了,请纠正我
Krish

如果需要,您可以看到其他人的架子。
teedyay'8

3
更准确地说,“其他人正在获取最新信息不会下载您的代码”
sergiol

18

许多这些讨论中遗漏的一点是,如何恢复到搁置更改的SAME计算机上。对大多数人来说也许很明显,但对我而言却不是。我相信您会执行“撤消待更改”-是吗?

我了解流程如下:

  1. 要搁置您当前的未决更改,请右键单击该项目,搁置,添加一个搁置名称
  2. 这会将更改保存(或搁置)到服务器(没有人看到它们)
  3. 然后,您执行“撤消待更改”以将您的代码还原到最后一个签入点
  4. 然后,您可以对还原的代码基准执行所需的操作
  5. 您可以随时取消更改(可能需要合并冲突)

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


8
如果在创建架子集时清除了“在本地保留未决更改”复选框,则可以跳过“撤消未决更改”步骤。
Michael J.

14

我一直都遇到这种情况,因此有关分支的补充信息:

如果您使用多个分支,则架子集将与创建它们的特定分支联系在一起。因此,如果您让变更集在架子上生锈的时间过长,并且不得不搁置在另一个分支上,则必须使用7月发布的电动工具来做到这一点。

tfpt unshelve /migrate

没话题,但是是真的:-)
撕毁Østergaard,

2
该注释是如此之旧,以至于在堆栈溢出答案ettiquete建立之前就已添加:-)
joshua.ewer

2

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


1

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


0

如果您使用的是Gated构建,则在触发构建时,它将为提交的构建工作空间创建一个架子集。如果构建失败,则会拒绝该货架。如果构建成功,那么将创建一个变更集并将其提交给TFS。无论哪种情况,执行签入/构建工作的人员都必须调和工作区,就像执行“获取最新”一样简单。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.