Answers:
在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上创建的名为“ Shelve Set Name”的货架集合并到Branch2,请使用以下命令:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
tfpt的替代解决方案,无需手动合并每个文件
tfs电动工具的问题在于您正在执行“无基础合并”,因此必须确认每个文件。我的书架上有800多个文件,我从不相信“自动合并”按钮,也不想依次浏览每个文件-因此,我不得不另辟!径!
C:\temp\shelveset-name
(注意:导出时没有进度条-因此,如果您有一个大型架子集,且导出需要很长时间,则只需在Windows资源管理器(“文件”>“属性”>“大小”)中检查文件是否仍在关闭状态认为它是冻结的)。
现在,您只需要使用Windows资源管理器将它们复制到新分支。
这为我工作:
c:\temp\shelveset-name
必须重命名以对应于新分支。提示:确保复制到正确的地方!!!重要提示:我发现,如果您不首先使TFS脱机,那么您将最终获得任何新文件(来自未更改的变更集),并且没有出现红色的复选标记,因此您必须再次排除并包括它们让他们添加。如果有人想解决这个问题,我想知道-刷新似乎无效。
我花了很多时间来完成这项工作,而且我几乎没有要解决的问题。可能,但是这里很少出现问题,很少遵循规则来避免这些问题
错误:
无法确定工作区
通过从源分支根文件夹运行命令解决了此特定问题。这与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是否可以正常工作?
总结一下
以下步骤可用于小型架子集(约20个文件或更少)。