Visual Studio 2017无法将Shelveset移动到另一个分支

时间:2018-03-19 19:42:50

标签: visual-studio-2017 tfs2017

由于他们认为将大部分Power Tools功能集成到VS2017中,新命令“tf unshelve”与旧命令“tfpt unshelve”的工作方式不同,无法将shelvesets移动到另一个分支,因为您无法添加源和使用新命令的目标。我真的不想在我的笔记本电脑上安装VS2015只是为了移动一个shelveset。有谁知道如何用VS2017做到这一点?我很难相信这已经不可能了。

非常感谢任何帮助!

8 个答案:

答案 0 :(得分:7)

我绝对同意,这是2017年及以后的版本大为错过的功能。经过多次手动操作后,我决定将其添加到名为“ MultiMerge”的(免费)Visual Studio扩展中。现在,您可以右键单击架子集,然后选择目标分支。有一个VS2017版本和VS2019。或者,您可以简单地使用Visual Studio中的“工具和扩展名”菜单选择此扩展名。

随时为扩展程序评分,让其他人更快地找到它:)

答案 1 :(得分:3)

不幸的是,使用命令" tftp unshelve"将Shelveset移动到另一个分支。或" tf unshelve"目前在VS 2017中仍然不支持。

已经有feedback submitted here来跟踪,就像下面提到的 Youhana Naseim [MSFT] 一样(来源here):

  

对于VS 2017,我们没有电动工具发布。我们经常   评估产品中仍缺少的功能。该   最值得注意的三个是:

     
      
  • TFS Windows Shell Extensions集成

  •   
  • 按状态查找服务器工作区

  •   
  • 取消保留/迁移

  •   

因此,作为一种解决方法,您可以尝试以下方式:

答案 2 :(得分:3)

另一种解决方法...

  1. 从现有架子集中检入更改(变更集1)
  2. 将更改合并到另一个分支并签入(更改集2)
  3. 回滚Changeset 1中的更改​​。

这将保留更改集2的更改并回滚原始分支。

此过程可能不适用于所有公司及其政策,但确实可以。我不喜欢它,但有时是必要的。

答案 3 :(得分:2)

使用VS2019的另一种可能更简单的方法是将源文件夹复制/粘贴到分支目标文件夹并使用

tf reconcile /promote

检测所有添加或更改的文件。

答案 4 :(得分:1)

当我知道分支文件可以直接由架子集覆盖时,这就是我的处理方法。如果需要合并,则将win-merge与目录compare结合使用,将它们缝合在一起。

  • 关闭所有Visual Studio实例
  • 将本地源目录重命名为临时名称
  • 打开Visual Studio
  • 通常不会搁置您的更改-VS将仅在其中进行更改的情况下重新创建目录结构。
  • 将所有更改的文件复制到分支目录(覆盖只读文件)
  • 关闭Visual Studio
  • 将本地源目录重命名为其原始名称(摆脱重新创建的VS)
  • 重新打开您的分支项目
  • 现在有两个选择:您可以脱机然后再回到联机状态,以使VS知道更改了什么,或者只是签出整个文件夹然后再次签入。只需确保没有其他任何检查,然后再检查!

可惜的是,这还没有作为VS的本机功能投入到VS中,但是当您考虑取消搁置到代码合并的复杂性以及保存历史记录等工作时,任务就变得很复杂。祝你好运!

答案 5 :(得分:0)

到目前为止(2019年5月),TSPT在Visual Studio 2017中不可用。

我发现的解决方法是创建一个新分支,并使用WinMerge(http://winmerge.org)之类的工具来比较和合并从Main到新Branch的更改,然后在所有分支都可以的情况下撤消更改。

答案 6 :(得分:0)

Multimerge 扩展 (MultiMerge.2017, MultiMerge.2019) 对我来说就像一个魅力。 (或者更确切地说,TFVC 工具本身无法通过重新应用补丁来合并。)

VS 2017 和 VS 2019 没有 tfptunshelve /migrate 命令也没有被合并到 tf 中。所以目前还没有什么可以开箱即用的。 (上次检查是在 v16.7.5)

答案 7 :(得分:0)

迟到了,但我通过在分支 A 中获取我需要的变更集来解决它。将文件夹重命名为分支 B。现在我的新分支有了我需要的变更集。然后只需在高级下强制获取最新以重新获取原始分支 A 的原样。我的分支 B 是全新的,所以我不需要它的任何其他东西,不确定这对你来说是否相同,但已经足够快了。