TFS 2012 Unshelve для разных ветвей → Элемент с тем же ключом уже добавлен

Мне нужна помощь в решении следующей проблемы:

Я пытаюсь удалить код из ветки источника на целевую ветвь.

Я использую следующее:

  • VS2012 RC
  • TFS 2012
  • VS2012 x64 Перекрестные инструменты Командная строка

Когда я использую командную строку для выполнения операции unhelve, происходит следующее:

  • Диалоговое окно сведений о полках отображается со списком файлов изменений.
  • Нажмите кнопку Unshelve.
  • Наблюдать вывод командной строки: "Элемент с тем же ключом уже добавлен."

Я загрузил ServicePack1 для электроинструментов. Однако мне не удалось решить эту проблему.

Ответ 1

У меня была такая же проблема, и я исправил ее, когда я повторно отменил набор изменений из ветки источника , но решил не сохранять ожидающие изменения локально. После этого миграция нового полки гладко прошла.

(Я также убедился, что выполнил следующие шаги, полученные из других ответов на этом сайте)

  • Используйте рабочую область, которая охватывает как ветки источника, так и цели
  • Запустите команду из папки, сопоставленной с веткой источника
  • Проверка котировок вокруг любых путей, содержащих пробелы
  • Удаление кеша в C:\Users [USERNAME]\AppData\Local\Microsoft\Team Foundation\4.0\Кэш и перезапуск Visual Studio

Ответ 2

У меня была такая же ошибка при использовании 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
  • Попробуйте запустить команду из источника → Ветвь и ветвь → Источник
  • Моя рабочая область уже охватывает как ветки источника, так и цели


Решение

Откройте свой эквивалент командной строки VS2013 x86.

  • Проверьте, установлены ли инструменты Team Foundation Power Tools:

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

  • Убедитесь, что у вас есть 0 Отложенные и Исключенные изменения.
    У меня были некоторые Исключенные изменения, которые были обнаружены, но не добавлены, и это меня поймало. Исключенные изменения должны выглядеть так:

    enter image description here
    Примечание: Нет "Обнаружен: XX (добавляет)" - должен не быть видимым

  • При запуске tf status вы должны увидеть что-то вроде следующего.
    Либо 1 изменение для файла .tfignore, либо 0 изменений (ов). Все остальное будет нарушать слияние.

    C:\tfs\Root\Solution > Статус tf
    Имя файла Изменить Локальный путь


    $/Root.tfignore edit C:\tfs\Root\Solution.tfignore

    1 изменение (ы)

  • Убедитесь, что вы запускаете команду tfpt из каталога исходного решения

Теперь вы сможете успешно объединить полки из одной ветки в другую.

Примечание по .tfsignore:
Если у вас много ожидающих изменений, которые вы не хотите отменять по какой-либо причине, то модификация файла .tfignore в порядке.

Если это единственный файл, который вы оставили с изменениями, он не будет тормозить слияние.
 .tfignore reference = > fooobar.com/questions/32506/...

Ответ 3

Попробуйте отменить все изменения в ветке Source и Target, а затем повторите попытку...

Ответ 4

Попробуйте удалить все файлы в следующей папке и перезапустить VS2012 (Источник):

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