1

Update OpsHub has published an update to their utility that fixes the problem I encountered.

I am trying to migrate an on-premises Team Foundation Server 2010 to Visual Studio online using the OpsHub Visual Studio Online migration utility. It has successfully uploaded 1380 of 6585 change sets, but is stuck on one of them and will not continue. The error message for the problematic change set:

Changeset ID: 1417

OH-SCM-009: Error occurred while sync. TF400023: The local workspace could not be reconciled with the server.

If I open the TFS workspace in Visual Studio (by browsing to O:\w69_1), I get a very similar error message in a popup window:

Error

TF400023: The local workspace could not be reconciled with the server.

The Visual Studio Source Control console displays a dozen repetitions of the following error message:

TF14060: The item $/EDT/SingleProjectClient/Data cannot be deleted. One or more children have pending changes.

Browsing through the pending changes in the workspace, it is clear that $/EDT/SingleProjectClient/Data/AllProjects.sdf has a pending "merge, delete" change.

The "merge, delete" change was present in the original change set made on the on-premises team foundation server. The problematic changeset ID 1417 contains the following changes:

  • $/EDT/SingleProjectClient/Data: delete
  • $/EDT/SingleProjectClient/Data/AllProjects.sdf: merge, delete

I have tried to undo the pending change on $/EDT/SingleProjectClient/Data/AllProjects.sdf, but that doesn't help. The migration utility continues to issue the same error message (TF400023: the local workspace could not be reconciled with the server).

Stack trace from OpsHubTFSService.log

2015-02-06 12:16:47,834 [5] ERROR Error occured in thread of CheckinAll:TF400023: The local workspace could not be reconciled with the server.

at Microsoft.TeamFoundation.VersionControl.Client.LocalDataAccessLayer.<>c__DisplayClass23.b__1c(LocalWorkspaceProperties wp, WorkspaceVersionTable lv, LocalPendingChangesTable pc)

at Microsoft.TeamFoundation.VersionControl.Client.LocalWorkspaceTransaction.Execute(AllTablesTransaction toExecute)

at Microsoft.TeamFoundation.VersionControl.Client.LocalDataAccessLayer.ReconcileLocalWorkspace(Workspace workspace, WebServiceLayer webServiceLayer, Boolean unscannedReconcile, Boolean reconcileMissingFromDisk, Failure[]& failures, Boolean& pendingChangesUpdatedByServer)

at Microsoft.TeamFoundation.VersionControl.Client.WebServiceLayerLocalWorkspaces.ReconcileIfLocal(String workspaceName, String ownerName, Boolean unscannedReconcile, Boolean reconcileMissingLocalItems, Boolean skipIfAccessDenied, Boolean& reconciled)

at Microsoft.TeamFoundation.VersionControl.Client.WebServiceLayerLocalWorkspaces.CheckPendingChanges(String workspaceName, String ownerName, String[] serverItems)

at Microsoft.TeamFoundation.VersionControl.Client.Workspace.EvaluateCheckin2(CheckinEvaluationOptions options, IEnumerable&grave;1 allChanges, IEnumerable`1 changes, String comment, CheckinNote checkinNote, WorkItemCheckinInfo[] workItemChanges)

at Service.Adapters.TFSCheckinWorkspaceContext.EvaluateCheckIn(List`1 changesToCommit, String comment, CheckinNote checkinNote, WorkItemCheckinInfo[] workItemChanges) in f:\Ashish Docs\Checkouts\OVSMU Branch\OpsHubV2\TFSWCFServiceSource\Service\Service\TFSVersionControl\AdapterComponents\TFSCheckinWorkspaceContext.cs:line 2392

at Service.Adapters.TFSCheckinWorkspaceContext.checkin(String comment, WorkItemCheckinInfo[] workItemChanges, List&grave;1 otherCheckInProperties, String checkinUser) in f:\Ashish Docs\Checkouts\OVSMU Branch\OpsHubV2\TFSWCFServiceSource\Service\Service\TFSVersionControl\AdapterComponents\TFSCheckinWorkspaceContext.cs:line 2344

at Service.Adapters.TFSVCAdapter.checkIn(List&grave;1 checkinItems, String checkinComment, String checkinUser, List&grave;1 workitemId, List`1 otherCheckInProperties) in f:\Ashish Docs\Checkouts\OVSMU Branch\OpsHubV2\TFSWCFServiceSource\Service\Service\TFSVersionControl\AdapterComponents\TFSVCAdapter.cs:line 123

at com.opshub.tfs.test.TFSWebService.<>c__DisplayClass2.b__0() in f:\Ashish Docs\Checkouts\OVSMU Branch\OpsHubV2\TFSWCFServiceSource\Service\Service\TFSWebService.cs:line 692

Karl Dickman
  • 43
  • 1
  • 6

1 Answers1

0

If your server was ever TFS 2005/8 you can be in the situation that a past merge delete never completed.

In 2005/2008 if you had both updates and deleted in a single operation you had to do two checkins to complete the merge. However the UI to tell you that was only introduced in 2008 SP1 (AFAIR).

I have run into this issue all the time with Timely Migration and TFS Integration Tools. And as the merge was never completed your code bow relies (or possibly does) on the current setup. In the aforementioned tools I would edit the incoming migration data to remove knowledge of the pend-deleted and allow the tool to proceed.

The OpsHub tool is not good with corner cases and you may need OpsHub to show you how to resolve with their tool.

  • "In the aforementioned tools I would edit the incoming migration data to remove knowledge of the pend-deleted and allow the tool to proceed." May I ask how you accomplished this? I tried to do something similar (convert the pending merge/delete into a simple delete), but I did not succeed. The on-premises server was installed as TFS 2010, not an earlier version, so that particular pitfall isn't the problem, but thank you for mentioning it. – Karl Dickman Feb 08 '15 at 20:27
  • The Timely Migration tools come with additional tools to do this, and the TFS IP has ways...no idea for OpsHub.. – MrHinsh - Martin Hinshelwood Feb 09 '15 at 12:29
  • In TFS 2010 there was a nice ignorable warning box about the requirement of a second merge. The user could of course ignore it. – MrHinsh - Martin Hinshelwood Feb 09 '15 at 12:30