Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在tfs 2008中取消搁置到其他分支吗?_Tfs_Branch_Shelve_Unshelve - Fatal编程技术网

我可以在tfs 2008中取消搁置到其他分支吗?

我可以在tfs 2008中取消搁置到其他分支吗?,tfs,branch,shelve,unshelve,Tfs,Branch,Shelve,Unshelve,假设我团队中的某个开发人员搁置了他在分支A中所做的更改,而我正在处理分支B。我可以将他的更改取消搁置到分支B中吗?(通过GUI或命令提示)工具架信息包括它要到达的特定路径。不幸的是,我不知道有什么自动的方法可以取消搁置到它被搁置到的位置以外的任何位置。在我想这样做的时候,我必须签出新分支中的等效文件,从旧分支中取消搁置,然后手动复制这些文件 编辑:嗯,我想我做得很辛苦。我得试试柯特的解决方案。:) 应该允许您这样做 C:\src\2\Merlin\Main>tfpt unshelve /?

假设我团队中的某个开发人员搁置了他在分支A中所做的更改,而我正在处理分支B。我可以将他的更改取消搁置到分支B中吗?(通过GUI或命令提示)

工具架信息包括它要到达的特定路径。不幸的是,我不知道有什么自动的方法可以取消搁置到它被搁置到的位置以外的任何位置。在我想这样做的时候,我必须签出新分支中的等效文件,从旧分支中取消搁置,然后手动复制这些文件

编辑:嗯,我想我做得很辛苦。我得试试柯特的解决方案。:)

应该允许您这样做

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上创建的名为“搁置集名称”的搁置集合并到Branch2,请使用以下命令:

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

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

tfs电动工具的问题在于。我有一个超过800个文件的搁置集,我从不相信“自动合并”按钮,也不想依次查看每个文件,所以我必须找到另一种方法

  • 下载并安装
  • 该工具显示在VS2010中的“工具”下
  • 运行“搁置集助手”工具,单击搜索以显示搁置集
  • 右键单击搁置集并选择“导出搁置集”
  • 保存到空位置,如
    C:\temp\shelveset name
  • 现在有一个完整的目录结构,其中只包含新文件
(注意:导出时没有进度条-因此,如果您有一个需要很长时间才能导出的大型搁置集,您只需在Windows资源管理器(文件>属性>大小)中检查,如果您认为它已冻结,文件是否仍在下降)

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

这对我很有用:

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

重要提示:我发现,如果您不首先使TFS脱机,那么最终将显示任何新文件(来自取消搁置更改集),而不显示一点红色复选标记,并且您必须再次排除和包含这些文件,以便添加它们。如果有人对此问题有其他解决方案,我很想知道-刷新似乎不起作用。

我花了大量时间来完成这项工作,我几乎没有什么问题要克服。这是可能的,但这里很少有问题,也很少有规则来避免这些问题

错误:

无法确定工作区

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

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

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

总结

  • 使用CMD或DevCMD-没关系
  • 分支根文件夹运行命令
  • 验证特定VS的Team Explorer服务器连接
  • TF Power Tools 2013适用于TFS v15,至少迁移选项适用

    • 以下步骤可用于小型搁置集(~20个文件或更少)

    • 在搁置集和目标分支上,首先签入或回滚所有挂起的更新
    • 在搁置集分支上,从适用的搁置集中取消搁置文件
    • 在目标分支上,签出取消搁置的搁置集中的任何现有文件
    • 将搁置集分支上的未搁置文件与目标分支上的文件进行比较,以确定需要合并更新的文件(如果有)
    • 如果需要,手动对上一步的适用文件进行合并更新,并将这些文件保存在目标分支工作区中
    • 将其他搁置集文件从搁置集分支工作区复制到目标分支工作区
    • 将目标分支工作区中新更新的文件与签入的文件进行比较。根据需要进行任何更正
    • 签入目标分支上的新更新文件
    • 回滚搁置集分支上未搁置的文件

    • 哦。。。柯特,我想你让我很开心。我以后还要试一下。电动工具是从哪里来的?是的,电动工具应该允许你这么做,但不幸的是,每次合并都会出错,几乎没有用。合并并没有那么糟糕。我发现自动合并在90%的情况下都有效。只是试了一下。我在shelfset中移动了许多文件,不幸的是,这似乎不太管用。您需要手动“迁移”所有这些文件(也没有多选)。然后将它们作为新文件添加到工作区。我不能使用它,因为我不能再合并它了。这种方法对于更大的搁置集更容易,是最好的方法
      cd [your !!source!! branch root]
      tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"