Thursday, November 17, 2011

TFS 2010: TF203028 and TF203071 branching errors

TF203028: You cannot create a branch at {path} because a branch already exists at {sub path}.

You see this message when a branch root exists at a sub path of the folder you are trying to mark as a branch root.

In the case a sub-folder was incorrectly marked as a branch root, you can recover easily from this by converting the branch root back to a folder , from the File->Source Control->Branching & Merging->Convert to Folder menu.

TF203071: The operation cannot be completed because the source folder that you specified contains a branch. If you want to perform this operation on the branch, then you must specify {path} as the source of the operation.

This occurs when you try to create a branch from a folder and there is a “branch roots” below this.

The reason for this restriction is consider the scenario, I have the following tree structure:

$/proj/MyProduct/Branches – regular folder

$/proj/MyProduct/Branches/v1.1 – regular folder

$/proj/MyProduct/Branches/v1.1/Dev - branch root

$/proj/MyProduct/Branches/v1.1/Test - branch root, related to Dev

$/proj/MyProduct/Branches/v1.1/Release - branch root, related to Test.

Users were branching v1.1 to v1.2, hoping that the relationship between Dev->Test->Release is maintained. However the relationship being established ends up being:

$/proj/MyProduct/Branches/v1.1/Dev -> $/proj/MyProduct/Branches/v1.2/Dev

$/proj/MyProduct/Branches/v1.1/Test –> $/proj/MyProduct/Branches/v1.2/Test

$/proj/MyProduct/Branches/v1.1/Release –>$/proj/MyProduct/Branches/v1.2/Release

To prevent users from making this assumption, we have the restriction. If you hit this message, you have a choice:

a. You are in the scenario described above, in that case you can setup your branches by branching $/proj/MyProduct/Branches/v1.1/Dev -> $/proj/MyProduct/Branches/v1.2/Dev and then branching -> $/proj/MyProduct/Branches/v1.2/Dev -> $/proj/MyProduct/Branches/v1.2/Test ->$/proj/MyProduct/Branches/v1.2/Release

b. If you still want to proceed with the operation (this is likely because $/proj/MyProduct/Branches/v1.1/Dev was incorrectly marked as a branch root). You can do so by converting the “branch root” back to a folder, from the File->Source Control->Branching & Merging->Convert to Folder menu.

No comments: