We hit more problems, as per my last article that means another post! This post will detail the steps to troubleshoot a merge issue but the techniques I learned are good examples for generic troubleshooting of the TFS Integration Platform. Our issue;
A set of files aren’t being checked in after a merge in SVN.
Looking at the Subversion log I can see that the files should be checked in during a merge at a specific changeset. Looking at the TFSIP log you should see entries similar to “Processing ChangeGroup”, searching the solution for this string takes us to the MigrationEngine.cs file. I added an IF statement after the processing trace is added such that a break point can be hit when a certain changeset is reached;
Adding a breakpoint at line 347 means that you’ll be able to step into the code when a problematic changeset is reached and troubleshooting can begin.
During troubleshooting this issue I randomly hit the following error on build from the Interop.Subversion project, I resolved by cleaning only that project then rebuilding the solution;
error C1859: ‘Debug\Interop.Subversion.pch’ unexpected precompiled header error, simply rerunning the compiler might fix this problem D:\tfsip\IntegrationPlatform\Adapters\Subversion\Interop.Subversion\AprPool.cpp
I ended up hitting the same issue as mentioned in part 1 where a manual merge was required and for the life of me I couldn’t remember how I fixed it the first time around. Follows are my notes from each attempt;
“1039” issue – Manual rename of folder in TFS and check in;
Source = SVN version 1039
Target = TFS checkin 942
Undo pending change
Delete empty folder from folder B and checkin -> 942
Move from folder A to B and checkin -> 943
Get latest, undo pending change then open in Windows Explorer. Manually copy the files from source folder to target then within Source Explorer delete the source folder and add new items to target. Check in an cross fingers.
1039 -> 942
Rename B/WebSite to Website2 then checkin
Move A to B and check in
Manually map 1039 to 944
Hit start, map all conflicts to 944
Resolve Conflict in TE, Rename Server and check in
Map 1039 to 943 in TFS IP.
The simple step I should have taken, and wasn’t aware of, was to open Team Explorer and have a look at the list of pending changes. This helps a lot and was the troubleshooting step that worked around this issue. Migration continued
Around a thousand SVN revisions later we hit another issue, this time a runtime conflict; “Checkin failed for unknown reason”. I opened VS to check pending changes and found missing files, for some reason the Subversion adapter wasn’t getting a few thousand of the files for this revision from the repository. I manually got that revision from SVN and pasted into the TfsIpData folder and checked in to attempt a manual merge as before. I managed to check it in but when I kicked off the migration again it threw a few hundred conflicts.
It failed, and I’m sorry to say this is where the story ends as we are cutting our losses with the migration and moving to GIT and Stash. More on that in the next post.