我可以不支持tfs 2008中的其他分支吗?

假设我的团队中的一些开发人员搁置了他在分支A中所做的更改。而我正在分支B上工作。是否可以将他的更改保留到分支B中? (通过GUI或命令提示符)

Visual Studio电动工具应该让你这样做。

C:\src\2\Merlin\Main>tfpt unshelve /? tfpt unshelve - Unshelve into workspace with pending changes Allows a shelveset to be unshelved into a workspace with pending changes. Merges content between local and shelved changes. Allows migration of shelved changes from one branch into another by rewriting server paths. Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup] [/migrate /source:serverpath /target:serverpath] shelvesetname The name of the shelveset to unshelve /nobackup Skip the creation of a backup shelveset /migrate Rewrite the server paths of the shelved items (for example to unshelve into another branch) /source:serverpath Source location for path rewrite (supply with /migrate) /target:serverpath Target location for path rewrite (supply with /migrate) /nobackup Skip the creation of a backup shelveset 

例如,要将在Branch1上创build的名为“Shelve Set Name”的货架集合合并到Branch2,请使用以下命令:

 >tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/" 

tfpt的替代解决scheme避免了必须手动合并每个文件

tfs电源工具的问题是, 你正在做一个“无根据的合并”,所以必须确认每个文件 。 我有一个超过800个文件的搁置,我从来不相信'自动合并'button,并不想依次通过每个文件 – 所以我必须find另一种方式!

  • 下载并安装TFS Shelveset Sidekick 。
  • 该工具出现在VS2010中的“工具”下
  • 运行“Shelveset Sidekick”工具,单击search以显示搁置
  • 右键点击你的货架,然后select“Export Shelveset”
  • 保存到一个空的位置,如C:\temp\shelveset-name
  • 现在有一个包含JUST新文件的完整目录结构

(注意:导出时没有进度条 – 所以如果你有一个需要很长时间导出的大型shelveset,你只需要在Windows资源pipe理器(文件>属性>大小)中检查文件是否仍然下降认为它被冻结)。

你现在只需要用Windows资源pipe理器将它们复制到新分支。

这对我工作:

  • 首先检查整个解决scheme(在新的分支)
  • closures该解决scheme
  • 从VS(脱机工具 )中脱机TFS – 请参阅下面为什么这是重要的…
  • 在Windows资源pipe理器中复制文件。 c:\temp\shelveset-name的目录结构将不得不重新命名为对应于新的分支。 提示:确保你复制到正确的地方!
  • 带上VS在线
  • 它应该find所有的变化并添加新的文件
  • 如果它要求你绑定sourcecontrol,那么一定要确认新分支的path是正确的。
  • testing – 然后签入新的文件

重要提示:我发现,如果您不首先将TFS脱机,那么最终将显示没有一点红色复选标记的任何新文件(来自您的未展开的更改集),并且必须再次排除并包含它们让他们join。 如果有人有这个问题的替代解决scheme,我很想知道 – 刷新似乎并没有工作。

以上命令演示: Unshelve命令基础

货架信息包括它所走的具体path。 不幸的是,我不知道有任何自动的方式去搁置除了被搁置的位置之外的任何位置。 我想这样做的时候,我不得不检查新分支中的等效文件,从旧分支取消搁置,然后手动复制文件。

编辑:好吧,我想我是这样做的难办法。 我将不得不尝试克特的解决scheme。 🙂