URGENT: Error when merging changes after folder move
Recently we faced with an error which preventing us from merging changes. This issue is quite urgent for us.
We had a main source tree under folder $/P5/RC and several version branches under $P5/R9, $P5/R10 and so on. We created new team project named "P7" and moved main source tree into it via move operation (to folder $/P7/RC). Now when we trying to merge any changeset to version branch (for example $/P5/R9) performed BEFORE moving main tree to the new project we are getting the following error:
The item $/P7/RC does not exist at the specified version.
It seems to us that TFS do not take into account move operations when trying to get specific version of items during changeset merging.
Unfortunately we are running TFS RTM bits and bug is here. We installed it on the clean machine. Just one note which could be important. We started from TFS RTM trial version,but then upgraded it to full version entering product code received with Certified Partner pack.
Until this incident all worked fine, no errors at all.
This error could be reproduced by perfoming the following steps:
1. Create new team project P5
2. Create SCC folder $/P5/RC and put some content into it
3. Branch $/P5/RC folder to $/P5/R9 folder
4. Make some changes in $/P5/RC folder
5. Create new team project P7
6. Move $/P5/RC to $/P7/RC location
7. Try to merge only one specific changeset (not latest version) from $/P7/RC folder to $/P5/R9 folder. This changeset should be commited BEFORE move operation. Error described above appears. We tried to use both Source Control Explorer and TF command line tool
I see the problem. Sorry to doubt you.
There was a bug where, after renaming the root of a branch, Merge wouldn't find changesets committed before the rename. When we fixed it, we decided that we would resolve the name using the end of the version range. So if you are merging by changeset with the range /version:X~Y, you need to specify the name of the source branch as it appeared at time Y.
In your case, that means tf merge $/P5/RC $/P5/R9 /r /version:X~X where X is the one specific changeset.
Unfortunately I can't think of a good way to do this in the UI. I'll add this to the [long] list of problems with the Merge Wizard...
Thank you very much, Richard.
Your solution works fine for us. At least it allows to us to merge changes with minimal overhead comparing to Source Control Explorer UI. Hope this bug will be fixed in SP1.
I ran into this same issue. I see how I can use the command line for merges by chosing the source branch name as it appeared at time Y. It would be nice if other commands such as tf history worked the same way, but when specifying the old branch name for commands other than tf merge, you get the "The item {0} does not exist at the specified version" error. It also seems that you should be able to do this using the UI.
I believe 'tf history' does use the 2nd part of the version range, just like tf merge. In the API, History actually has 3 versionSpec parameters so you can control the file-changeset pair independently from the version range.
As for the UI, we've gotten the message loud & clear that vNext needs to have feature parity with both today's command line and anything else we add.