How to merge TFS change sets programmatically?
changeset, merge, tfs
Solution
This is roughly how you would do it if you were working with the 2010 or 2012 TFS object models. Let me know if you have any questions.
// Get a reference to yourTeam Foundation Server.
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("http://<yourserver>:8080/tfs/<yourcollection> "));
// Get a reference to Version Control.
VersionControlServer versionControl = tpc.GetService<VersionControlServer>();
Workspace workspace = versionControl.GetWorkspace("<local path to your workspace>");
string sourceBranch = "$/<sourceBranch>";
string targetBranch = "$/<targetBranch>";
VersionSpec changesetToMerge = new ChangesetVersionSpec(<your changeset here>);
// actually pend the merge
workspace.Merge(sourceBranch, targetBranch, changesetToMerge, changesetToMerge);
// check in the merge
workspace.CheckIn(workspace.GetPendingChanges(), "your comment");
Problem
I know how to merge a change set in TFS 2010 using the command line command "tf merge". Is there a way I can do this in C# with code. I want to merge specific change sets only (cherry pick), one at a time.