TFS 2012取消对不同分支的支持 - >已添加具有相同键的项目

时间:2012-08-15 22:27:21

标签: tfs tfs-power-tools

我需要帮助解决以下问题:

我试图将源分支中的代码取消搁置到目标分支上。

我使用以下内容:

  • VS2012 RC
  • TFS 2012
  • VS2012 x64交叉工具命令提示符

当我使用命令提示符执行取消搁置操作时,会发生以下情况:

  1. 显示Shelveset详细信息对话框,其中包含更改文件列表。
  2. 点击取消搁置按钮。
  3. 观察命令提示输出: “已添加具有相同键的项目。”
  4. 我已经下载了电动工具的ServicePack1。 但是,我未能解决这个问题。

4 个答案:

答案 0 :(得分:8)

我遇到了同样的问题并在我从源分支重新搁置变更集时修复了它,但选择不在本地保留挂起的变更。在此之后,新货架的迁移顺利进行。

(我也确定我已经按照以下从本网站上的其他答案收集的步骤开始了)

  • 使用包含源和目标分支的工作区
  • 从映射到源分支的文件夹中运行命令
  • 检查包含空格的任何路径周围的引号
  • 在C:\ Users [USERNAME] \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ Cache中删除缓存并重新启动Visual Studio

答案 1 :(得分:8)

使用 Visual Studio 2013 和以下命令时出现同样的错误:

> tfpt unshelve /migrate /source:"$/Root/Solution" /target:"$/Root/Branches/Solution" "The name of my shelveset"
> An item with the same key has already been added


研究

以下是我尝试解决问题的方法:

  • 根据Andrey的回答清除缓存
  • 尝试从 Source - >运行命令分支分支 - >源
  • 我的工作区已包含源分支和目标分支


解决方案

打开等效的VS2013 x86 Native Tools命令提示符。

  1. 检查您是否安装了Team Foundation Power Tools:

      

    C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ tfpt

  2. 确保您有0 待处理排除更改。
    我有一些被排除的变化被检测到但没有被添加,这就是让我失望的原因。排除的更改应如下所示:

    enter image description here
    注意:“检测到:XX(添加)” - 应该可见

  3. 当您运行tf status时,您会看到以下内容 .tfignore 文件的1次更改或0次更改。任何其他事情都会扰乱合并。

      

    C:\ tfs \ Root \ Solution> tf状态
      文件名更改本地路径

         
         

    $ / Root .tfignore编辑C:\ tfs \ Root \ Solution.tfignore

         

    1次更改

  4. 确保您从源解决方案目录运行tfpt命令

  5. 您现在应该能够成功地将一个分支的搁置集合并到另一个分支。

    关于.tfsignore的说明:
    如果你有很多未决的变更,你不想因任何原因撤消,那么 对.tfignore文件的修改是可以的。

    如果这是您保留更改的唯一文件,则不会制动合并。
     .tfignore reference => stackoverflow - How to ignore files/directories in tfs?

答案 2 :(得分:4)

尝试撤消Source和Target分支上的所有更改,然后重试......

答案 3 :(得分:2)

尝试删除以下文件夹中的所有文件,然后重新启动VS2012(Source):

C:\ Users [USERNAME] \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ Cache