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