Reputation: 16705
I have a program that reads the lastest build and gets all the changesets from it. It is then possible to determine if the changset that I have it actually a merge, and where it was from.
Here's what I have:
List<IChangesetSummary> changeSets = InformationNodeConverters.GetAssociatedChangesets(build);
IEnumerable<Changeset> changesetDetails = changeSets.Select(x => versionControlServer.GetChangeset(x.ChangesetId));
// Determine is the first changeset was a merge
changesetDetails.First().IsMerge // How to check is the changeset is part of a merge?
UPDATE:
Following the answers so far I have updated
foreach (var cs in changesetDetails)
{
foreach (Change change in cs.Changes)
{
if ((change.ChangeType & ChangeType.Merge) == 0)
continue;
foreach(var m in change.MergeSources)
But MergeSources
is always empty.
Upvotes: 5
Views: 3253
Reputation: 1473
You need to check whether any of the Changes
made inside a Changeset
is of the ChangeType Merge
.
I don't know if the following works, but you get the idea:
changesetDetails.First().Changes.Any(c => (c.ChangeType & ChangeType.Merge) > 0)
Upvotes: 2
Reputation: 2304
Use the VersionControlServer.GetChangesForChangeset
method instead. The last parameter indicates that merge source information should be included.
List<IChangesetSummary> changeSets = InformationNodeConverters.GetAssociatedChangesets(build);
IEnumerable<Change> changes = changeSets.SelectMany(x => versionControlServer.GetChangesForChangeset(x.ChangesetId, false, Int32.MaxValue, null, null, true));
foreach (Change change in changes)
{
if ((change.ChangeType & ChangeType.Merge) == 0) continue;
foreach (var m in change.MergeSources)
{
// ...
}
}
Upvotes: 8
Reputation: 2304
Use the overload of VersionControlServer.GetChangeset
that accepts the includeDownloadInfo
bool parameter. Setting this parameter to true
will include the MergeSources
in the returned changesets.
IEnumerable<Changeset> changesetDetails = changeSets.Select(x => versionControlServer.GetChangeset(x.ChangesetId, true, true));
[ https://msdn.microsoft.com/en-us/library/bb138628.aspx ]
Upvotes: 0
Reputation: 23444
You would need to interrogate the files am see if the operation was "merge".
Upvotes: 0