I need help resolving the following issue:
I am attempting to unshelve code from the source branch onto a target branch.
I am using the following:
- VS2012 RC
- TFS 2012
- VS2012 x64 Cross Tools Command Prompt
When I use the command prompt to perform the unshelve operation, the following occurs:
- Shelveset details dialog gets displayed with list of change files.
- Click Unshelve button.
- Observe command prompt output: "An item with the same key has already been added."
I have downloaded ServicePack1 for power tools. However, I have failed to resolve this issue.
I had the same error when using Visual Studio 2013 and the following command:
Research
Here's what I tried to fix the issue:
Solution
Open up your equivalent of the VS2013 x86 Native Tools Command Prompt.
Check you have Team Foundation Power Tools installed:
Ensure you have 0 Pending and Excluded changes.
I had some Excluded changes which were detected but not added and this is what caught me out. Excluded changes should look like this:
Note: No "Detected: XX (adds)" - should not be visible
When you run
tf status
, you should see something like the following.Either 1 change(s) for the .tfignore file or 0 change(s). Anything else will upset the merge.
Ensure you are running the
tfpt
command from the source Solution directoryYou should be now be able to successfully merge a shelveset from one branch to another.
Note on .tfsignore:
If you have a lot of pending changes that you don't want to undo for whatever reason, then a modification to the .tfignore file is ok.
If this is the only file that you have left with changes, it won't brake the merge.
.tfignore reference => stackoverflow - How to ignore files/directories in tfs?
Try to delete all the files in the following folder and restart VS2012 (Source):
C:\Users[USERNAME]\AppData\Local\Microsoft\Team Foundation\4.0\Cache
Try to undo all changes on Source and Target branch and then try again...
I had the same issue and fixed it when I re-shelved the changeset from the source branch but chose not to preserve pending changes locally. After this the migration of the new shelveset ran smoothly.
(I also made sure I'd followed the below steps collected from other answers on this site)