我可以在tfs 2008中取消联系到另一个分支吗?

时间:2008-09-22 20:19:26

标签: tfs branch tfs2008 shelve unshelve

让我们假设我团队中的一些开发人员搁置他在分支A中所做的更改。我正在分支B工作。我可以将他的更改取消分支B吗? (通过GUI或命令提示符)

5 个答案:

答案 0 :(得分:128)

Visual Studio Power Tools应该允许你这样做。

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上创建的名为“Shelve Set Name”的搁架集合并到Branch2,请使用:

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

答案 1 :(得分:34)

替代tfpt解决方案,避免必须手动合并每个文件

tfs power tool的问题是you're doing a 'baseless merge' so have to confirm every file。我有超过800个文件的搁置,我从不相信“自动合并”按钮,并且不想依次浏览每个文件 - 所以我必须找到另一种方式!

  • 下载并安装TFS Shelveset Sidekick
  • 该工具显示在VS2010中的“工具”下
  • 运行'Shelveset Sidekick'工具,点击搜索以显示shelvesets
  • 右键单击您的shelveset并选择“Export Shelveset”
  • 保存到空白位置,例如C:\temp\shelveset-name
  • 现在有一个包含JUST新文件的完整目录结构

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

您现在只需使用Windows资源管理器将它们复制到新分支。

这对我有用:

  • 首先检查整个解决方案(在新分支中)
  • 关闭该解决方案
  • 从VS(Tool to do this)中取消TFS离线 - 请参阅下文,了解其重要性的原因......
  • 在Windows资源管理器中复制文件。必须重命名c:\temp\shelveset-name中的目录结构以对应于新分支。 提示:请务必将其复制到正确的位置!!!
  • 带VS在线
  • 应找到所有更改并添加新文件
  • 如果它要求您绑定sourcecontrol,请确保验证新分支的路径是否正确。
  • 测试 - 然后签入新文件

重要提示:我发现,如果您没有先将TFS脱机,那么您最终会得到任何新文件(来自您的未更改组)并且没有一点红色复选标记,您将不得不排除再次包含它们以使它们添加。如果有人有这个问题的替代解决方案,我很想知道 - 刷新似乎不起作用。

答案 2 :(得分:1)

货架信息包括其前往的特定路径。不幸的是,我不知道任何自动的方式来取消搁置到它所搁置的任何位置以外的任何位置。我想要这样做的时候我必须检查新分支中的等效文件,从旧分支中取消,然后手动复制文件。

编辑:嗯,我想我是在努力做到这一点。我将不得不尝试Curt的解决方案。 :)

答案 3 :(得分:0)

我花了很多时间来完成这项任务,而且我还有很多问题需要克服。这是可能的,但这里几乎没有什么问题和规则可以避免这些问题

错误:

  

无法确定工作区

通过从分支根文件夹运行命令解决了此特定问题。这与SO上的一些答案相反,他们说使用“目标”分支 - 不,使用“来源”:

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

此后出现第二个问题。似乎它无法连接到TFS服务器。我意识到,我安装了多个VS并连接到不同的TFS服务器。我使用VS12,我有工作区和服务器连接。但我没有意识到需要在VS13中复制相同的连接才能使TFPT2013正常工作。它连接到相同的服务器和工作区。

我也尝试过使用TFPT2015,但我安装了它并没有安装TFPT.exe因此它没用。所以我尝试从TFPT2013到TFS2015,它适用于这个特定的命令。我想知道,为什么不,如果VS12 / 13对TFS2015工作正常?

总结

  • 使用CMD或DevCMD - 无所谓
  • 来源分支根文件夹
  • 运行命令
  • 验证特定VS的团队资源管理器服务器连接
  • TF Power Tools 2013针对TFS v15工作,至少迁移选项正常工作

答案 4 :(得分:0)

以下步骤可用于小型架子集(约20个文件或更少)。

  1. 在架子集和目标分支上,首先将所有待处理的更新签入或回滚。
  2. 在架子集分支上,从适用的架子集上搁置文件。
  3. 在目标分支上,检出未放置在架子上的架子集中的任何现有文件。
  4. 将shelfset分支上的未保存文件与目标分支上的未保存文件进行比较,以标识需要合并更新(如果有)的那些文件。
  5. 如果需要,请手动对上一步的适用文件进行合并更新,然后将这些文件保存在目标分支工作区中。
  6. 将其他架子集文件从架子集分支工作空间复制到目标分支工作空间。
  7. 将目标分支工作区中的新更新文件与签入文件进行比较。根据需要进行任何更正。
  8. 在目标分支上签入新的更新文件。
  9. 回滚货架集分支上未保存的文件。