让我们假设在我的团队开发者的搁置他的变化,他在分支A.没有和我的工作分支B.我可以取消搁置他变成支路B? (通过GUI或命令提示)
Answer 1:
在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的创建店2使用一个搁置集:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Answer 2:
替代的解决方案为避免与具有手动合并每个文件TFPT
与TFS电动工具的问题是, 你正在做一个“毫无根据的合并”,因此必须确认每个文件 。 我有超过800个文件搁置,我从来没有相信“自动合并”按钮,并没有想通过每一个文件又 - 所以我必须找到另一种方式!
- 下载并安装TFS搁置的Sidekick 。
- 该工具在“工具”出现在VS2010
- 运行“搁置搭档”工具,单击搜索,显示搁置集
- 右键单击您的搁置,然后选择“导出搁置”
- 保存到一个空位置,如
C:\temp\shelveset-name
- 现在有只包含新文件的完整目录结构
(注:有没有在导出时进度条 - 所以,如果你有一个大搁置,需要一个很长的时间来导出你只需要在Windows资源管理器(文件>属性>尺寸),以检查文件仍下来,如果你认为这是冻结)。
现在,您只需要拷贝它们与Windows资源管理器的新的分支。
这为我工作:
- 检查出的整体解决方案第一个(在新的分支)
- 关闭该解决方案
- 从VS范围内采取TFS脱机( 工具来做到这一点 ) - 见下文为什么这很重要?
- 在Windows资源管理器中复制文件。 在目录结构
c:\temp\shelveset-name
将被重新命名,以对应于新的分支。 提示:请确保您复制到正确的地方! - 把VS在线
- 它应该发现所有的修改和添加新文件
- 如果它要求你绑定sourcecontrol一定要验证该路径是新的分支正确。
- 测试 - 然后签入新的文件
重要提示:我发现,如果你不先TFS下线,那么你将与任何新文件(从unshelves变更),显示没有一点红色对勾结束了,你就必须排除,并再次包括它们让他们加入。 如果任何人有一个替代的解决这个问题,我很想知道 - 清爽似乎并没有工作。
Answer 3:
货架信息包括它去的具体路径。 不幸的是我不知道的任何自动方式取消搁置到比它被搁置到其他任何位置。 本次我想做到这一点,我不得不签出相当于文件的新分支,从旧的分支取消搁置,然后手动将文件复制过来。
编辑:嗯,我想我是这样做了艰辛的道路。 我会尝试柯特的解决方案。 :)
Answer 4:
我花了完成这件事的时间量好,我有几个问题需要克服。 这是可能的,但这里的几个问题和一些规则可循,以avois这些问题
错误:
无法确定工作区
这种特殊的问题是通过运行源分支根文件夹命令解决。 他们说,使用“目标”分支这违背了对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电动工具2013对TFS V15工作,至少迁移选项作品