Well, it took me a lot of time, but I think I found out how to do it. This is the code that will find all the parent sets of changes:
public static List<Changeset> GetMergedChangesets(Changeset changeset, VersionControlServer versionControlServer)
{
Dictionary<int, bool> alreadyCoveredChangesets = new Dictionary<int, bool>();
List<Changeset> parentChangesets = new List<Changeset>();
foreach(Change change in changeset.Changes)
{
var queryResults = versionControlServer.QueryMergesExtended(
new ItemSpec(change.Item.ServerItem, RecursionType.Full),
new ChangesetVersionSpec(changeset.ChangesetId),
null,
null);
foreach (var result in queryResults)
{
if (result.TargetChangeset.ChangesetId == changeset.ChangesetId)
{
if (!alreadyCoveredChangesets.ContainsKey(result.SourceChangeset.ChangesetId))
{
alreadyCoveredChangesets.Add(result.SourceChangeset.ChangesetId, true);
parentChangesets.Add(versionControlServer.GetChangeset(result.SourceChangeset.ChangesetId));
}
}
}
}
return parentChangesets;
}
Edit:
, "", "VersionSpec.Latest" : "new ChangesetVersionSpec (changeset.ChangesetId)" , .